通常在面试的时候有面试官为了考察你的基础知识,会告诉你如何在Interger类型的list集合中添加字符串到集合中?通常如果直接通过add方法添加是会报错的,范型约束的产生在编译阶段,那么我们是否能够绕过编译,在运行阶段添加一个int类型的数据呢,答案是肯定的。
public class Reflection {
static List<Integer> list=new ArrayList<Integer>();
public static void main(String[] args) {
list.add(1);
list.add(2);
//直接添加字符串进去,会在编译阶段报错
//list.add("sss");
Class class1=list.getClass();
try {
Method method= class1.getMethod("add",Object.class);
//通过反射机制操作list对象
method.invoke(list,"sss");
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果如下: