Java <;?超级E>;以及<;?扩展E>;名单
具有以下简单的类结构:Java <;?超级E>;以及<;?扩展E>;名单,java,generics,Java,Generics,具有以下简单的类结构: class A { } class B extends A { } class C extends B { } 我正在创建一个ArrayList以保留先前创建的类的对象: List<? extends A> list1 = new ArrayList<A>(); List<? extends B> list2 = new ArrayList<B>(); List<? extends C> list3 = n
class A {
}
class B extends A {
}
class C extends B {
}
我正在创建一个ArrayList以保留先前创建的类的对象:
List<? extends A> list1 = new ArrayList<A>();
List<? extends B> list2 = new ArrayList<B>();
List<? extends C> list3 = new ArrayList<C>();
List<? super A> list4 = new ArrayList<A>();
List<? super B> list5 = new ArrayList<B>();
List<? super C> list6 = new ArrayList<C>();
List类型定义ListList“?扩展了一个”表示“从A(或A本身)派生的某种类型”。例如,一个List
与List兼容,但它不是这样工作的
你应该使用列表我想这个问题有答案:谢谢,这是一个很好的理解方式!还有一件事对我来说很奇怪——我发现你可以做一个列表:Listuse Number,Integer是final:)
List<? extends A> list1
List<? super A> list4
int sum(Collection<? extends Integer> collection) {
for (Integer : collection) {
// do sth
}
// ...
}
public void myAdd(List<? super B> lst) {
lst.add(new Object()) //this is a supertype of B (compile time error)
}
...
ArrayList<A> list = new ArrayList<A>();
myAdd(list); //tries to add Object to a list of type A