前言
在前面的基础上在做进一步的改进,前面我们是动态写死了方法,即自己指定了方法名,当然我们可以利用反射帮我们完成函数名的动态指定
首先是一个反射例子
有了这个原理就可以对之前的proxy进行改造
|
|
注意这里和之前做了几处修改
1.利用反射动态生成方法
2.更改编译后生成文件的目录
3.返回类型为object
4具体在代码里有注释
测试类:
12
Jungle jungle=(Jungle) Proxy.newProxyInstance(Jungle.class); jungle.gank();
输出结果
class com.zwl.pr.LeeSinTimeProxy
LeeSin is ganking…
gank time:1336
time:1336
这里很明显发现方法都是固定的,如果想要方法都是动态生成的,则要进行进一步修改
首先增加一个
InvocationHandler动态生成类
然后是具体的针对所有接口的时间处理类
然后proxy里也要进行相应修改
|
|
测试类:
|
|
对应生成的java文件
对应的测试结果
class com.zwl.pr.LeeSinTimeProxy
LeeSin is ganking…
gank time:2642
time:2642