我们有:
class A{}
class B extends A{}
class C extends B{}
class D extends C{}
Run Code Online (Sandbox Code Playgroud)
我们可以定义列表,如:
List<? super B> lsb1 = new ArrayList<Object>();
//List<? super B> lsb2 = new ArrayList<Integer>();//Integer, we expect this
List<? super B> lsb3 = new ArrayList<A>();
List<? super B> lsb4 = new ArrayList<B>();
//List<? super B> lsb5 = new ArrayList<C>();//not compile
//List<? super B> lsb6 = new ArrayList<D>();//not compile
Run Code Online (Sandbox Code Playgroud)
现在我们创建一些对象:
Object o = new Object();
Integer i = new Integer(3);
A a = new A();
B …Run Code Online (Sandbox Code Playgroud)