public class GenericTest2 {
/*
1. 泛型在继承方面的体现
虽然类A是类B的父类,但是G<A>和G<B>二者不具备子父类关系,两者是并列关系
补充:类A是类B的父类,A<G> 是 B<G> 的父类
*/
@Test
public void test1(){
Object obj = null;
String str = null;
obj = str;
Object[] arr1 = null;
String[] arr2 = null;
arr1 = arr2;
//编译不通过
//Date date = new Date();
//str = date;
List<Object> list1 = null;
List<String> list2 = null;
//此时的list1和list2的类型不具有子父类关系
//编译不通过
// list1 = list2;
/*
反证法:
假设list1 = list2;
list1.add(123);导致混入非String的数据 出错
*/
show(list1);
show1(list2);
}
public void show(List<Object> list){
}
public void show1(List<String> list){
}
@Test
public void test2(){
AbstractList<String> list1 = null;
List<String> list2 = null;
ArrayList<String> list3 = null;
list1 = list3;
list2 = list3;
List<String> list4 = new ArrayList<>();
}
}
[泛型与File]泛型在继承方面的体现
最新推荐文章于 2025-12-29 18:10:01 发布
这篇博客探讨了Java中泛型在继承方面的特性,强调了虽然类A是类B的父类,但G<A>和G<B>并不具有子父类关系。同时,文章通过示例说明了对象数组和List之间的转换规则,以及尝试将不同类型的List进行赋值时编译不通过的原因。此外,还介绍了如何使用反证法来理解这一概念。

3622

被折叠的 条评论
为什么被折叠?



