1.问题描述
现在有一个List<Integer> list = new ArrayList<Integer>();如何在list中添加String数据???
2.问题解决:
利用反射越过泛型检查,我们知道泛型其实就是在编译的时候检查,其实在class文件中,并没有泛型的存在,所以我们可以利用泛型来跳过编译的检查
3.代码:
java代码:
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class GenericDemo {
public static void main(String[] args) throws Exception {
//利用反射越过泛型检查,因为在。clas文件中泛型根本就不存在,默认Object
//所以得到.class文件就可以越过泛型
List<Integer> list = new ArrayList<Integer>();
//得到ArrayList的配置文件
Class clazz = Class.forName("java.util.ArrayList");
//得到ArrayList的add()方法
Method method = clazz.getMethod("add",Object.class);
//调用方法
method.invoke(list, "I'm String");
//打印结果
System.out.println(list);
}
}
结果
:
[I'm String]