班级Main
有一个子类SubMain
。
班级Foo
有一个子类SubFoo
。
在Main
:
public List<Foo> getFoo() { return null; }
在SubMain
:
@Override
public List<SubFoo> getFoo() { return this.subfoo; }
我在List<SubFoo>
上遇到了编译错误。我错误地想到了这个吗?以下几个消息来源让我觉得这样可行。
答案 0 :(得分:5)
考虑一下:
public List<? extends Foo> getFoo() { return null; }
正如Edwin
所述,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>
答案 1 :(得分:1)