如何将元素添加到通配符泛型集合中?
为什么使用此 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 行:“无法实例化 ArrayList<?扩展 Foo>”
- 在第 4 行:“方法 add(capture#1-of ?扩展 Foo) 类型 List<capture#1-of ?扩展 Foo>不适用于参数 (SubFoo)”
更新:感谢 Jeff C,我可以将第 3 行更改为“new ArrayList<Foo>();”。但是我仍然遇到第4行的问题。