//-------------------------
//废话不多说,直接上代码。代码里面添加了详细的解释。
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList; /*
* 在一个ArrayList<Integer>的一个对象,在这个集合里面添加一个字符串该如何实现呢?
* 分析:因为在ArrayList<Integer> 中的Integer数据类型只是为了数据安全,将数据规范后给编译器识别真正在运行的时候,仍然是Object.
*
*
*/
public class ArrayListDemo {
public static void main(String[] args) throws Exception {
// 创建集合对象
ArrayList<Integer> array = new ArrayList<Integer>();
array.add(2); // 使用反射调用ArrayList的源码
Class c = array.getClass();//集合ArrayList的class文件 Constructor con = c.getConstructor();
Object obj = con.newInstance(); //如果使用此处的obj相当于通过class的无参构造重新创建了一个对象
System.out.println(obj == array); //false, Method method = c.getMethod("add", Object.class); //getMethod获取方法
method.invoke(array, "java"); //调用array的add方法传入的值是java System.out.println(array); }
}