作业是怎么实现的?
最后那个作业是怎么实现的?
最后那个作业是怎么实现的?
2014-11-29
接上面回答,调用时候得到日志记录的对象后, 再通过LogHandler代理一次即可:代码如下:
public static void main(String[] args) { Moveable car = new Car(); InvocationHandler timeHandler = new TimeHandler(car); Class<?> cls = car.getClass(); /** * loader:类加载器<br> * interfaces:实现接口<br> * h InvocationHandler<br> */ Moveable timeCar = (Moveable) Proxy.newProxyInstance( cls.getClassLoader(), cls.getInterfaces(), timeHandler); InvocationHandler logHandler = new LogHandler(timeCar); Moveable logCar = (Moveable) Proxy.newProxyInstance( cls.getClassLoader(), cls.getInterfaces(), logHandler); logCar.move(); }
在写一个日志代理
public class LogHandler implements InvocationHandler {
private Object target;
public LogHandler(Object target) {
super();
this.target = target;
}
/**
* 参数
* proxy 被代理对象
* method 被代理对象的方法
* args 方法的参数
*
* 返回值:
* Object 方法的返回值
*
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("日志开始。。。");
method.invoke(target);
System.out.println("日志结束。。。");
return null;
}
}
举报