问答详情
源自:2-4 使用 cglib 动态产生代理

关于JDK动态代理的问题

JDK动态代理只能代理实现了接口的类,这个类必须得实现InvocationHandler是吧?如果是的话,那LogHandler也实现了InvocationHandler接口,是不是它也可以代理自己呢?请老师给予解答。谢谢。

提问者:用户1078541 2014-12-16 21:28

个回答

  • David
    2014-12-17 20:24:11
    已采纳

    您好,很高兴收到你的问题,解答如下:

    JDK动态代理只能代理实现了接口的类,不是这个类(比如Car,实现Moveable接口)需要实现InvocationHandler,而是他的处理器(LogHandler)需要实现InvocationHandler接口。

    JDK动态代理它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些 interface。你当然可以把该class的实例当作这些interface中的任何一个来用。当然,这个Dynamic Proxy其实就是一个Proxy,它不会替你作实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实际的工作。

  • 用户1078541
    2014-12-19 08:42:38

    明白了,刚开始我的想法是错的,经过老师提点,大彻大悟了。呵呵。谢谢!