12-4 泛型 ---- 泛型在继承上的体现
一、 泛型在继承方面的体现
虽然类A是类B的父类,但是G< A > 和G< B >二者不具备子父类关系,二者是并列关系。
补充:类A是类B的父类,A
代码:
package java3;
import org.junit.Test;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
//泛型在继承方面的体现
public class GenericTest {
//泛型在继承方面的体现
@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 = new ArrayList<String>();
//此时的list1和list2的类型不具有子父类关系
//编译不通过
// list1 = list2;
/*
反证法:
假设list1 = list2;
list1.add(123);导致混入非String的数据。出错。
*/
show(list1);
show1(list3);
}
public void show(List<Object> list){
System.out.println("list3--Object");
}
public void show1(List<String> list){
System.out.println("show1--String");
}
@Test
public void test2(){
AbstractList<String> list1 = null;
List<String> list2 = null;
ArrayList<String> list3 = null;
list1 = list3;
list2 = list3;
list2 = list1;
List<String> list4 = new ArrayList<>();
}
}
输出:
list3--Object
show1--String