这个方法是可以调用底层的方法:
/*3、
* ArrayList<Integer> list = new ArrayList<Integer>();
在这个泛型为Integer的ArrayList中存放一个String类型的对象。
* @author sabrina
*/
public class Test3 {
public static void main(String[] args) throws Exception {
ArrayList<Integer> list = new ArrayList<Integer>(); //已经规定集合里面装Integer了
// 获得字节码
Class<? > clz = list.getClass();
//得到方法
Method madd = clz.getDeclaredMethod("add",Object.class);//改变方法接受的的类型
Method mRemove = clz.getDeclaredMethod("remove",Object.class);//改变方法接受的的类型
// m1.setAccessible(true);
madd.invoke(list, "添加nihao");
madd.invoke(list, "添加我是字符串");
madd.invoke(list, "添加完成");
for (Object i : list) {
System.out.println(i);
}
System.out.println("===============我是分隔线===================");
mRemove.invoke(list, "添加nihao");
mRemove.invoke(list, "添加我是字符串");
for (Object i : list) {
System.out.println(i);
}
}
}
例子中:ArrayList<Integer> list已经定义了这个list集合中只能添加Integer 对象。但是我们用了add 和remove两个方法。 如果用invoke的话,就可以调用Arraylist 父类的父类。。。。的更底层的方法,这样子就不必遵循他本身只能添加Integer的规则。 |
|