作业是怎么实现的?
最后那个作业是怎么实现的?
最后那个作业是怎么实现的?
 
                            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;
}
}
举报