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();
为什么这样子做的话只能输出日志线程,而输出不了时间线程?
代理的代理,就是将用时间增强过的代理再用日志增强,这样就可以同时输出时间和日志,应该对car的时间增强代理类增强日志功能。看不懂你的ctp和clp的意义何在,你可能将动态代理和静态代理混淆了,你这里的代理处理器还是对时间的增强,并没有对日志增强的代理处理器。(动态代理是依据代理处理器来动态创建代理的。)
CarTimeProxy 和 Car 类的代码贴出来看看