抛开实用性,我们只是简单的去探讨一下这个问题。
List<String>指定了添加到List的对象必须为String类型,范型约束的产生在编译阶段,那么我们是否能够绕过编译,在运行阶段添加一个int类型的数据呢,答案是肯定的。
List<String> list1 = new ArrayList<>();
list1.add("test1");
// 添加int类型数据报错
// list1.add(20);
Class class2 = list1.getClass();
try {
Method method1 = class2.getMethod("add", Object.class);
// 通过反射机制操作list1
method1.invoke(list1, 20);
// 输出结果[test1, 20]
System.out.println(list1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
以上。
网友评论