LetsCoding.cn
天地之间有杆秤,拿秤砣砸老百姓。
Java动态代理测试代码
1
import
java.lang.reflect.InvocationHandler;
2
import
java.lang.reflect.Method;
3
import
java.lang.reflect.Proxy;
4
5
import
junit.framework.TestCase;
6
7
interface
Human
{
8
public
String getName();
9
public
int
getId();
10
public
void
printNameAndId();
11
}
12
13
class
Student
implements
Human
{
14
private
String name;
15
private
int
id;
16
17
public
Student(
int
id, String name)
{
18
this
.id
=
id;
19
this
.name
=
name;
20
}
21
22
public
String getName()
{
23
return
name;
24
}
25
26
public
int
getId()
{
27
return
id;
28
}
29
30
public
void
printNameAndId()
{
31
System.out.println(
"
name:
"
+
name);
32
System.out.println(
"
id:
"
+
id);
33
}
34
}
35
36
class
MyInvocationHandler
implements
InvocationHandler
{
37
private
Object o;
//
被代理的对象
38
39
public
Object newProxy(Object targetObject)
{
40
this
.o
=
targetObject;
41
42
//
返回代理实例
43
return
Proxy.newProxyInstance(o.getClass().getClassLoader(), o
44
.getClass().getInterfaces(),
this
);
45
}
46
47
@Override
48
public
Object invoke(Object proxy, Method method, Object[] args)
49
throws
Throwable
{
50
aspectLogic();
//
切面逻辑
51
Object ret
=
method.invoke(o, args);
52
//
aspectLogic();
//
切面逻辑
53
return
ret;
54
}
55
56
private
void
aspectLogic()
{
57
System.out.println(
"
这里放入横切性逻辑
"
);
58
}
59
}
60
61
public
class
ProxyClassTest
extends
TestCase
{
62
private
Student s;
63
private
MyInvocationHandler handler;
64
private
Human h;
65
66
@Override
67
public
void
setUp()
{
68
s
=
new
Student(
10
,
"
小剑
"
);
69
handler
=
new
MyInvocationHandler();
70
h
=
(Human) handler.newProxy(s);
71
}
72
73
public
void
testGetName()
{
74
String n
=
h.getName();
75
System.out.println(n);
76
}
77
78
public
void
testPrintNameAndId()
{
79
h.printNameAndId();
80
}
81
}
82
posted on 2009-10-10 09:19
Rolandz
阅读(299)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
导航
首页
新随笔
联系
管理
统计
随笔 - 20
文章 - 0
评论 - 22
引用 - 0
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(12)
开源软件(1)
(rss)
算法/数据结构
(rss)
编程实践(11)
(rss)
软件过程
(rss)
随笔档案
(19)
2014年6月 (2)
2014年5月 (10)
2014年4月 (1)
2009年10月 (1)
2008年12月 (1)
2008年11月 (3)
2008年10月 (1)
积分与排名
积分 - 50366
排名 - 974
最新评论
1. re: Java 8:健壮、易用的时间/日期API终于来临[未登录]
很给力!
--Michael
2. re: Java 8:健壮、易用的时间/日期API终于来临
hello world
--刘敏
3. re: JVM中finally子句介绍
好好学习,一定能成功的!相信自己,相信一定有发展的。
--泡菜
4. re: 对象和数组:JVM中,处理对象和数组的字节码介绍
每一次来这里都会有收获。
--泡菜
5. re: Java 8:Lambda表达式(一)
评论内容较长,点击标题查看
--手赚网-手机赚钱软件排行,手机赚钱平台,网络赚钱http://www.szapk.cn
阅读排行榜
1. Java 8:健壮、易用的时间/日期API终于来临(11668)
2. Java中,状态模式和策略模式的区别(6362)
3. 字节码基础:JVM字节码初探(5068)
4. Java 8:Lambda表达式(三)(3090)
5. Lucene源码分析笔记之[org.apache.lucene.store](一)(2930)
6. JVM中的异常处理(2727)
7. Lucene源码分析笔记之[org.apache.lucene.document](四)(2329)
8. JVM中finally子句介绍(2138)
9. Java 8:Lambda表达式(二)(1796)
10. Java类文件的基本结构(1731)
评论排行榜
1. 字节码基础:JVM字节码初探(4)
2. 模式影响之20年(3)
3. Lucene源码分析笔记之[org.apache.lucene.document](四)(3)
4. Java 8:健壮、易用的时间/日期API终于来临(2)
5. Java类文件的基本结构(2)