泛型,只是在编译的过程中进行语法检查,查看集合中所存放的类型是否符合要求,在这种情况下,我能不能跳过编译器的检查,向一个存放Integer的List中存放一个String类型的数据?
这里要用到Java的反射机制:
@Test
public void test1(){
try {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
//通过反射调用list的add方法
list.getClass().getMethod("add", Object.class).invoke(list, "abc");
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
} catch (IllegalAccessException | IllegalArgumentException
| InvocationTargetException | NoSuchMethodException
| SecurityException e) {
e.printStackTrace();
}
}
输出:
1
2
3
abc