因为我们在实际开发中往往都是一个集合放得都是同一种元素
所以泛型的存在是为了防止你在实际开发中向集合中插入不同的元素
泛型只是在编译的时候有效,你可以试试ArrayList集合加泛型和不加泛型他们的类类型都是一样的
所以只要用反射来操作即可,因为反射都是绕过编译操作的
例:
ArrayList<String> list=new ArrayList<String>();
try {
Method method=list.getClass().getMethod("add", new Class[]{Object.class});
//因为它可以接收任何对象,所以反射Object的类类型
method.invoke(list, new Object[]{100});
}catch (Exception e) {
e.printStackTrace();
System.out.println(list);
上面中已经确定了泛型为String
这时候你插入int元素就会报错
这时候就要找到add方法
直接用invoke向其中插入int元素 100即可 |