关于JDK动态代理的问题

来源:2-4 使用 cglib 动态产生代理

用户1078541

2014-12-16 21:28

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

写回答 关注

2回答

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

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

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

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

    用户1078...

    非常感谢!

    2014-12-19 08:41:37

    共 1 条回复 >

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

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

模式的秘密---代理模式

本节课程将带你领略Java编程语言中代理模式的奥妙

54912 学习 · 98 问题

查看课程

相似问题