很多地方值得思考

来源:3-3 动态代理实现添加 InvocationHandler

Lovecanon

2015-01-27 18:47

“Method md =” + infce.getName() + ".class.getMethod(\"" + m.getName() + "\");"这一串是什么意思?是不是先拿到Moveable的类类型再通过move()方法...为什么我要改成infce.getSimpleName()才能运行成功?

写回答 关注

1回答

  • David
    2015-01-28 22:05:04
    已采纳

    1、这句话的意思是通过方法的反射,得到Moveable类的某个方法;

    2、根据API中的定义,Class.getSimpleName()方法是获取源代码中给出的‘底层类’简称 (Moveable)

    而Class.getName();以String的形式,返回Class对象的‘实体’名称 (com.imooc.proxy.Moveable)

    windy_... 回复Loveca...

    再重新试了一下,两个其实都行,我之前出现不行的情况,是因为我的包名为Proxy.com.imooc.chapter3_1.XXX,然后包路径下同时有一个Proxy的类,所以可能导致了无法正确解析Proxy是一个包还是一个类,如果修改为正确的话那么两种方法都可以, 从这里可以看出我们日常命名规范的一些重要性

    2016-02-17 19:35:02

    共 3 条回复 >

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

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

54901 学习 · 134 问题

查看课程

相似问题