泛型
1.Java中的泛型不是型变的。
package com.shbj.kotlin5;
import java.util.ArrayList;
import java.util.List;
class P{
}
class C1 extends P{
}
class C2 extends P{
}
class CC1 extends C1{
}
List<P> list1 = new ArrayList<C1>();
2.Java中的数组是型变的。
P[] arr = new C1[5];
arr[0] = new C2();
3.Java中的协变
List<? extends Object> eStringList = new ArrayList<String>();
List<? extends P> eList = new ArrayList<C1>();
List<? extends P> eList1 = new ArrayList<P>();
P p1 = eList.get(0);
4.Java中的逆变
List<? super String> stringList1 = new ArrayList<Object>();
List<? super C1> list1 = new ArrayList<P>();<