【发布时间】:2010-09-15 15:24:42
【问题描述】:
为什么我在使用此 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 extends Foo>”
- 第 4 行:“List
类型中的方法 add(capture#1-of ? extends Foo) 不适用于参数 (SubFoo)”
更新:感谢 Jeff C,我可以将第 3 行更改为“new ArrayList
【问题讨论】: