类Main
有一个子类SubMain
.
类Foo
有一个子类SubFoo
.
在 Main
:
public List<Foo> getFoo() { return null; }
在 SubMain
:
@Override
public List<SubFoo> getFoo() { return this.subfoo; }
我在 List<SubFoo>
上收到编译器错误。我是否错误地思考了这个问题?以下是一些让我认为这可行的来源。
最佳答案
考虑:
public List<? extends Foo> getFoo() { return null; }
如Edwin
州,a List<SubFoo>
不是 List<Foo>
的子类因为您无法添加 Foo
到 List<SubFoo>
.
其他选项:
public class Main<T extends Foo>{
public List<T> getFoo();
}
public class SubMain extends Main<SubFoo>{
public List<SubFoo> getFoo();
}
或制作SubMain
返回 List<Foo>
关于java - 我认为这会因为协变返回类型而起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18854353/