在学习集合的时候,我们会接触到泛型。利用泛型,可以很好的控制集合中添加的数据。但是深入了解之后,会发现泛型只在编译时期起作用。而运行时期泛型会被擦除。
什么意思呢?举个简单的例子,坐火车要过安检。就相当于泛型的作用就相当于安检。只在进站的时候起作用,而你进去之后通过其它手段拿到了一些违禁品安检也管不到你。
假设已经有类Egg、Coke两个类。分别是鸡蛋、可乐。
先创建一个可乐瓶:
public void demo1(){
//创建一个只能装可乐的可乐瓶
List<Coke> cokeBottle = new ArrayList<Coke>();
}
然后尝试放鸡蛋进去:
Egg egg = new Egg();
Coke coke = new Coke();
//添加可乐没有问题
cokeBottle.add(coke;)
//放入鸡蛋。这时候,这句代码会报错
cokeBottle.add(egg);
因为泛型的关系,放鸡蛋的代码出错了。那么要怎么才能放鸡蛋呢?我们先获取cokeBottle(可乐瓶)编译后的Class对象: