A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© sabrina妖儿 中级黑马   /  2015-11-16 14:58  /  362 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个方法是可以调用底层的方法:
/*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的规则。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马