Java动态代理 InvocationHandler接口的invoke方法,是JDK实现的方法,还是程 序员自己实现的invoke方法。

publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{System.out.p... public Object invoke(Object proxy, Method method, Object[] args)

throws Throwable {
System.out.println("调用被代理对象的方法是:"+method.getName()

+" "+method.getDeclaringClass());
System.out.println("之前设置新行为" );
method.invoke(sub,args); //动态调用被代理类的行为方法。
System.out.println("之后设置新行为" );
return null;
}

method.invoke(sub,args); 这个方法是实现的那里的 invoke 方法。

就是public Object invoke(Object proxy, Method method, Object[] args)

这三个参数,我对应不上,还不知道 invoke 方法是JDK 自己提供的方法实现,还

是程序员自己写的代码去实现接口的方法invoke。

method.invoke(sub,args)----是不是就是InvocationHandler接口的invoke方法

里的参数,还是具体方法。

我是初学着,没理解上去啊,请高手解答一下,谢谢啦。
展开
 我来答
cs6641468
推荐于2016-03-05 · TA获得超过5713个赞
知道大有可为答主
回答量:863
采纳率:100%
帮助的人:991万
展开全部
method.invoke 是Java反射里面的知识
就是把这个method激活。 sub这包含这个method的对象。 args就是这个method的参数值(被封装成了Object)

举个例子,有个类A,实例一个对象a,类里有个public void say(String str) 的方法,获得这个method为say后:
method.invoke(a,new Object[]{"this is string"});
即等同于
a.say("this is string")
追问
你说的把method激活,是指public Object invoke(Object proxy, Method“ method”, Object[] args) 是指把 这个参数激活吗。 还是指method.invoke(sub,args) 激活这个反射。

还有一点,我还没弄懂, public Object invoke(Object proxy, Method method, Object[] args) 这个方法 是InvocationHandler接口里的。用接口的话,方法必须实现的。 那这个invoke方法是在那个类里实现的啊。 还就是编程的人,自己在编写Iinvoke的。
追答
1.我说的method激活是 method.invoke(sub,args)
2.动态代理截获某个方法,在方法前方法后加东西,方法执行还是要自己 method.invoke(sub,args)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式