Java泛型是伪泛型,因为Java在编译期间,所有的泛型信息都会被擦除掉,这就是通常所说的类型擦除。
以下举例说明:
可以看到如果直接在Integer类型集合中添加字符串是会报错的,那么是不是就一定不能添加了呢?答案是否定的,可以通过Java泛型中的类型擦除特点及反射机制实现。如下
package demo;
import java.lang.reflect.Method;
import java.util.ArrayList;
/**
* @author: 邹祥发
* @date: 2021/9/17 10:49
*/
public class Demo02 {
public static void main(String[] args) throws Exception{
ArrayList<Integer> list = new ArrayList<>();
list.add(77);
//反射机制实现
Class<? extends ArrayList> clazz = list.getClass();
Method add = clazz.getDeclaredMethod("add", Object.class);
add.invoke(list,"zou");
System.out.println(list);
}
}
运行结果
[77, zou]