多态、数组中能否使用泛型
import java.util.List;
/**
* 1.泛型没有多态
* 2.泛型没有数组
* 底层原因?
* @author Administrator
*
*/
public class GenericPolymorphism {
public static void main(String[] args) {
//父类引用指向子类对象--->多态
//编译为父类,使用为子类
List list = new ArrayList();
//泛型不能用于多态
//List<List> list1 = new ArrayList<LinkedList>();
//使用通配符 及extends解决
List<? extends List> list2 = new ArrayList<LinkedList>();
ArrayList list3 = new ArrayList(10);
//泛型不能用于数组
// ArrayList<E> list4 = new ArrayList<E>(10);
//jdk1.7对泛型的简化,仅需要在声明时规定类型
List< List> list5 = new ArrayList<>();
}
}
泛型的擦除
/**
* 泛型的擦除
*在使用泛型的时候没有定义具体的类型当做Object使用(类似,但不等同于,编译时不会进行类型检查),会弹出警告Waring
*
* @author Administrator
*
*/
public class MyStuApp {
public static void main(String[] args) {
//泛型的擦除,即不指定类型,当做普通类、方法使用
GenericClass stu = new GenericClass();
GenericClass<Integer> stu1 = new GenericClass<Integer>();
stu1.setObj(1111);
GenericClass<String> stu2 = new GenericClass<String>();
stu2.setObj("aaa");
Integer num = stu1.getObj();
String str = stu2.getObj();
System.out.println(num + "," + str);
}
}