擦除机制:将一个List集合 泛型 赋值给一个没有使用到泛型List集合,直接去除泛型
- package com.collection.Demo06;
-
- import java.util.ArrayList;
- import java.util.List;
-
- /**
- * 泛型擦除机制
- */
- public class Test06 {
- public static void main(String[] args) {
- /**
- * 泛型原理 底层 使用擦除机制
- * 泛型 是在编译阶段限制传递的类型
- */
- List
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
{ - 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 底层是如何实现的?