泛型在继承上的体现:
如果B是A的一个子类型(子类或者子接口),而G是具有泛型声明的类或接口,G<B>并不是G<A>的子类型,二者不具备子父类关系,二者时并列关系;
如果B是A的一个子类型(子类或者子接口),A<G> 是 B<G> 的父类;
实例1:
public class GenericTest {
@Test
public void test1(){
Object obj = null;
String str = null;
// 编译成功,多态的体现
obj = str;
Object[] arr1 = null;
String[] arr2 = null;
// 编译成功
arr1 = arr2;
List<Object> list1 = null;
List<String> list2 = null;
// 编译不通过
// 此时的list1和list2的类型不具有子父类关系
// list1 = list2;
}
@Test
public void test2(){
List<String> list1 = null;
ArrayList<String> list2 = null;
// 编译通过
// 这种写法我们平时经常用
list1 = list2;
// 经常这样写
List<String> list4 = new ArrayList<>();
}
}