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 }
开始在code,我的个人特色。