擦除机制:将一个List集合 泛型 赋值给一个没有使用到泛型List集合,直接去除泛型
示例代码
package com.collection.Demo06;
import java.util.ArrayList;
import java.util.List;
/**
* 泛型擦除机制
*/
public class Test06 {
public static void main(String[] args) {
/**
* 泛型原理 底层 使用擦除机制
* 泛型 是在编译阶段限制传递的类型
*/
List<String> strs = new ArrayList<>();
strs.add("mayikt");//输入参数 String
//擦除机制:将一个List集合 泛型 赋值给一个没有使用到泛型List集合,直接去除泛型
List list = strs;
list.add(3);//输入参数 Object
list.add("mayikt");
/**
* 泛型 是在编译阶段限制传递类型 在运行阶段都是擦除
* 底层 class 文件在运行 里面是没有泛型的
* 如何证明?
* java源代码->编译成class
* xjad反编译工具
*/
}
}
package com.collection.Demo06;
public class Meite<T> {
private T t;
public T add() {
return t;
}
}
/**
* java源代码->编译成class
* xjad反编译工具
* 将Meite.class反编译为Meite.java如下:
*
* public class Meite
* {
*
* private Object t;
*
* public Meite()
* {
* }
*
* public Object add()
* {
* return t;
* }
* }
*/
下一篇文章:ArrayList 底层是如何实现的?