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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wssjdysf 中级黑马   /  2014-5-29 22:29  /  1121 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法1
public void dynamicProxy(){
                Collection collectionProxy = (Collection)Proxy.newProxyInstance(
                                System.class.getClassLoader(),
                                new Class[]{Runnable.class,Comparable.class,Collection.class},
                                new InvocationHandler() {
                                ArrayList target = new ArrayList();//被代理的对象,Collection间接的实现类
                        @Override
                        /**
                         *
                         * @param proxy----------------------------问题所在:方法中的proxy怎么理解
                         * @param method
                         * @param args
                         * @rerutn ----------------------------------问题所在:此方法的返回值又怎么理解
                         */
                        public Object invoke(Object proxy, Method method, Object[] args)
                                        throws Throwable {
                                // TODO Auto-generated method stub
                                System.out.println("=====================================================");
//                                ArrayList target = new ArrayList();//被代理的对象,Collection间接的实现类
                                System.out.println(method.getName());
                                if(args!=null){
                                        for (Object object : args) {
                                                System.out.println(object);
                                        }
                                }                       
                                //在调用目标之前做点什么
                                System.out.println("附加的内容1");
                                Object objct = method.invoke(target, args);
                                //在调用目标之后做点什
                                System.out.println("附加的内容2");
                                return objct;
                        }
                });
//                System.out.println(object);
//                printMethodName(object.getClass());
                collectionProxy.add("zxx");
                collectionProxy.add("lhm");
                collectionProxy.remove("lhm");
                collectionProxy.add(new ArrayList().add(new ArrayList().add("hahahaha")));
                System.out.println("大小是多少:" + collectionProxy.size());
        }

在main方法中调用上面的方法,运行输出:
=====================================================
add
zxx
附加的内容1
附加的内容2
=====================================================
add
lhm
附加的内容1
附加的内容2
=====================================================
remove
lhm
附加的内容1
附加的内容2
=====================================================
add
true----------------------------------------------------问题所在:为什么这里会是true,我还以为是[[表示2维数组
附加的内容1
附加的内容2
=====================================================
size
附加的内容1
附加的内容2
大小是多少:2

1 个回复

倒序浏览
这问题开始不太明白,多弄几次,打印出来后,慢慢理解了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马