Consider:
public List<? extends Foo> getFoo() { return null; }
As Edwin
states, a List<SubFoo>
is not a subclass of List<Foo>
since you could not add of Foo
to a List<SubFoo>
.
Other options:
public class Main<T extends Foo>{
public List<T> getFoo();
}
public class SubMain extends Main<SubFoo>{
public List<SubFoo> getFoo();
}
or make SubMain
return a List<Foo>