为什么我在这段Java代码中会得到编译错误?
1 public List<? extends Foo> getFoos()
2 {
3 List<? extends Foo> foos = new ArrayList<? extends Foo>();
4 foos.add(new SubFoo());
5 return foos;
6 }
'SubFoo'是一个实现Foo接口的具体类,而Foo是一个接口。
使用这段代码我得到的错误:
- 第3行: "Cannot instantiate ArrayList<? extends Foo>"
- 第4行: "The method add(capture#1-of ? extends Foo) in the type List<capture#1-of ? extends Foo> is not applicable for the arguments (SubFoo)"
更新: 感谢Jeff C的建议,我可以将第3行改为"new ArrayList<Foo>();"。但是我仍然遇到第4行的问题。