java中使用反射往一个泛型是Integer类型的ArrayList中添加字符串,反射的案例1.

//-------------------------

//废话不多说,直接上代码。代码里面添加了详细的解释。

 1 import java.lang.reflect.Constructor;
 2 import java.lang.reflect.Method;
 3 import java.util.ArrayList;
 4 
 5 /*
 6  * 在一个ArrayList<Integer>的一个对象,在这个集合里面添加一个字符串该如何实现呢?
 7  * 分析:因为在ArrayList<Integer> 中的Integer数据类型只是为了数据安全,将数据规范后给编译器识别真正在运行的时候,仍然是Object.
 8  * 
 9  * 
10  */
11 public class ArrayListDemo {
12     public static void main(String[] args) throws Exception {
13         // 创建集合对象
14         ArrayList<Integer> array = new ArrayList<Integer>();
15         array.add(2);
16 
17         // 使用反射调用ArrayList的源码
18         Class c = array.getClass();//集合ArrayList的class文件
19 
20         Constructor con = c.getConstructor();
21         Object obj = con.newInstance(); //如果使用此处的obj相当于通过class的无参构造重新创建了一个对象
22         System.out.println(obj == array); //false,
23         
24         Method method = c.getMethod("add", Object.class);  //getMethod获取方法
25         method.invoke(array, "java");  //调用array的add方法传入的值是java
26         
27         System.out.println(array);
28 
29     }
30 }
原文地址:https://www.cnblogs.com/fuck1/p/5436528.html