Java Generics Puzzler,扩展类并使用通配符
2022-08-31 20:39:50
我已经用头撞了这个一段时间,并认为也许一些新的眼睛会看到这个问题;感谢您抽出宝贵时间接受采访。
import java.util.*;
class Tbin<T> extends ArrayList<T> {}
class TbinList<T> extends ArrayList<Tbin<T>> {}
class Base {}
class Derived extends Base {}
public class Test {
public static void main(String[] args) {
ArrayList<Tbin<? extends Base>> test = new ArrayList<>();
test.add(new Tbin<Derived>());
TbinList<? extends Base> test2 = new TbinList<>();
test2.add(new Tbin<Derived>());
}
}
使用 Java 8.在我看来,直接创建 容器 在 等同于 中的容器,但编译器说:test
test2
Test.java:15: error: no suitable method found for add(Tbin<Derived>)
test2.add(new Tbin<Derived>());
^
我该如何写,所以最后一行是可以接受的?Tbin
TbinList
请注意,我实际上将添加类型化的s,这就是我在最后一行中指定的原因。Tbin
Tbin<Derived>