设为首页 加入收藏

TOP

动态代理类的实现和解析(四)
2019-09-25 11:18:24 】 浏览:178
Tags:动态 代理 实现 解析
3
@Override 14 public void study3(int b, String a) { 15 System.out.println(a+b); 16 } 17 18 @Override 19 public int returnInt(int a) { 20 21 return a; 22 } 23 }

最后就是测试和使用所写的代理类了

第一步,创建一个Person类型的对象student,

第二步,创建一个InvocationHandler的实现类对象,并将student传入进去,这个student会将生成实现类中的成员变量target进行赋值初始化。

第三步,调用MyProxy中的newInstance方法来获得代理类对象(注意:newInstance 中的参数要是实现类的类类型来获得他的实现Interface接口的类类型,即Person,生成代理类的Java文件就是依据该接口生成的)

第四步, 测试生成的代理类对象,结果如下,通过原生student和代理类对象stu调用相同方法进行对比

 1 public static void main(String[] args) {
 2         Person student = new Student();
 3         
 4         InvocationHandler h = new Hadler<Person>(student);
 5         Person stu = (Person) MyProxy.newInstance(Person.class.getClassLoader(), Student.class.getInterfaces(), h);
 6         stu.study2();
 7         System.out.println("-------");
 8         student.study2();
 9         stu.study2(4);
10         stu.study3(4, "A");
11         int a = stu.returnInt(2015);
12         System.out.println(a);
13     }

运行结果:

先吃饭
正在考试中
再睡觉
-------
正在考试中
先吃饭
4
再睡觉
先吃饭
A4
再睡觉
先吃饭
再睡觉
2015

 

 

 

 

 

 

 

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇06.Django基础五之django模型层(.. 下一篇通俗易懂设计模式解析——模板方..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目