范型<? extends A> 到底表示什么意思? 看了好久,还是不明白。下面程序的第19行的错误是为什么? 还有,list1与list4,list2与list3有没有区别? 这种表示在实际中应用得多不多,高手们告一声,就用不多的话我就放弃这部分了,搞了两天了。
import java.util.*;
class A {} class B extends A {}
class C {}
public class Test { public static void main(String[] args) { List<A> list1 = new ArrayList<A>(); list1 = Arrays.asList(new A(), new B(), new B(), new A()); // list1 = Arrays.asList(new A(), new B(), new B(), new A(), new C()); //错误 List<A> list2; List<? extends A> list3; list2 = Arrays.asList(new A(), new B(), new B(), new A()); list3 = Arrays.asList(new A(), new B(), new B(), new A()); // list2 = Arrays.asList(new A(), new B(), new B(), new A(), new C()); //错误 List<? extends A> list4 = new ArrayList<A>(); List<? extends A> list5 = new ArrayList<? extends A>(); //第19行 错误 } } /* Test.java:19: 意外的类型 找到: ? extends A 需要: 不带限制范围的类或接口 List<? extends A> list5 = new ArrayList<? extends A>(); ^ */