问答详情
源自:2-3 了解 JDK 动态代理

jdk代理

Car car = new Car();
        CarTimeProxy ctp = new CarTimeProxy(car);
        CarLogProxy clp = new CarLogProxy(ctp);
         InvocationHandler h2= new TimeHandler(clp);
        Class<?> c = car.getClass();
        /*
         * loader:类加载器; interfaces:实现接口; h:InvocationHandler
         */
        Movable m = (Movable) Proxy.newProxyInstance(c.getClassLoader(),
                c.getInterfaces(), h2);
        m.Move();


为什么这样子做的话只能输出日志线程,而输出不了时间线程?

提问者:moummm 2017-07-21 10:13

个回答

  • YCyoung
    2017-07-21 16:47:06
    已采纳

    代理的代理,就是将用时间增强过的代理再用日志增强,这样就可以同时输出时间和日志,应该对car的时间增强代理类增强日志功能。看不懂你的ctp和clp的意义何在,你可能将动态代理和静态代理混淆了,你这里的代理处理器还是对时间的增强,并没有对日志增强的代理处理器。(动态代理是依据代理处理器来动态创建代理的。)

  • root750
    2017-07-21 16:39:49

    CarTimeProxy  和 Car  类的代码贴出来看看