请问实现InnovationHandler接口的动态代理类中的invoke函数参数为什么要接收一个Proxy代理实例对象呢,好像用不到这个对象。
请问实现InnovationHandler接口的动态代理类中的invoke函数参数为什么要接收一个Proxy代理实例对象呢,好像用不到这个对象。
动态代理类,是在类上做代理,而不是在对象上,方法的调用最终是要在对象上的。
比如说这样一个类:
public class User {
private int age;
// setter getter;
public User() {}
public User(int age) {
this.age = age;
}
public void println() {
System.out.println("age:" + this.age);
}
}
看这样一个代理类,对println
做处理:
public UserInvocationHanlder implements InvocationHandler {
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
method.invoke(proxy, args)
}
}
method.invoke(proxy, args)
,方法的调用必须传入当前实例(静态方法除外)new User(3)
和new User(5)
,打印的应该设什么呢?所以,最终还是回到method.invoke(proxy, args)
,方法的调用,必须传入当前实例(静态方法除外)。
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答749 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
相信这篇可以解决你的困惑:
https://stackoverflow.com/que...
简单说下我的理解: