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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯伟浩 黑马帝   /  2011-12-9 10:19  /  1605 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 侯伟浩 于 2011-12-21 16:39 编辑

看张老师的关于动态代理的时候,说到往invoke()方法中传进一个对象,再调用它的方法。怎么就没有视频了呢?
视频不全啊。能不能给段代码研究研究?

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

2 个回复

倒序浏览
你只要看API中的这个方法,就会理解原理了
回复 使用道具 举报
本帖最后由 周敏2011nc 于 2011-12-21 16:09 编辑

class MethodSelector implements InvocationHandler{
    private Object proxied;
    public MethodSelector(Object proxied){
            this.proxied = proxied;
    }
        public Object invoke(Object proxy, Method method, Object[] args)
                        throws Throwable {
                if(method.getName().equals("interesting"))
                   System.out.println("Proxy detected the interesting method");
            return method.invoke(proxied, args);
        }
       
}
interface SomeMethods{
        void boring1();
        void boring12();
        void interesting(String arg);
        void boring3();
}
class Implementation implements SomeMethods{

        public void boring1() {
        System.out.println("boring1");
        }

        public void boring12() {
                 System.out.println("boring2");
        }

        public void boring3() {
                 System.out.println("boring3");
        }
        public void interesting(String arg) {
                 System.out.println("intererting " + arg);
        }
}
public class SelectingMethods {
        public static void main(String[] args) {
            SomeMethods proxy = (SomeMethods)Proxy.newProxyInstance(
                            SomeMethods.class.getClassLoader(),
                            new Class[]{SomeMethods.class},
                            new MethodSelector(new Implementation()));
                            proxy.boring1();
                            proxy.boring12();
                            proxy.boring3();
                            proxy.interesting("bonobo");
        }

}
该程序通过Proxy.newProxyInstance()创建动态代理,invoke()方法传入代理对象。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马