2008-05-17
可以给Javabean添加动态属性特性的工具类
改行了,不再做软件开发了,之前工作中做过的一些有价值的东西陆续发布在这,希望对其他人有用。
相关说明:
1)可以通过两种方式让其他普通Javabean获得动态属性的特性
a)继承DynamicBeanImpl类就自动获得动态属性特性;
b)目标Javabean声明实现DynamicBean或Map接口,而有关接口方法的具体实现,则委托给DynamicBeanImpl
示例代码如下:
1) 改造方式1的示例代码如下:
1) /**
2) * 通过继承机制直接获得动态属性特性的扩展类
3) * @author Tu_Minglei
4) */
5) public class MyTestBean extends DynamicBeanImpl {
6) private Long id;
7) private String name;
8) private Object value;
9)
10) public Long getId() {
11) return id;
12) }
13) public void setId(Long id) {
14) this.id = id;
15) }
16) public String getName() {
17) return name;
18) }
19) public void setName(String name) {
20) this.name = name;
21) }
22) public Object getValue() {
23) return value;
24) }
25) public void setValue(Object value) {
26) this.value = value;
27) }
}
2) 改造方式2的示例代码如下:
1) /**
2) * 通过接口+聚合机制获得动态属性特性的扩展类
3) * @author Tu_Minglei
4) */
5) public class MyTestBean2 implements DynamicBean,Map {
6) private Long id;
7) private String name;
8) private Object value;
9)
10) public Long getId() {
11) return id;
12) }
13) public void setId(Long id) {
14) this.id = id;
15) }
16) public String getName() {
17) return name;
18) }
19) public void setName(String name) {
20) this.name = name;
21) }
22) public Object getValue() {
23) return value;
24) }
25) public void setValue(Object value) {
26) this.value = value;
27) }
28)
29) @Override
30) public String toString(){
31) return "[id:"+id+",name:"+name+",value:"+value+"]";
32) }
33)
34) /**++++++++++++++++++++++++++++++++++++++++++++++++++++++
35) * 说明:以下代码可以原封不动的拷入目标类中
36) **++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
37) DynamicBeanImpl _dynamicStub = new DynamicBeanImpl(this);
38) public Object get(String propName) {
39) return _dynamicStub.get(propName);
40) }
41) public void set(String propName, Object value) {
42) _dynamicStub.set(propName, value);
43) }
44) public void declare(String propName, Class propType) {
45) _dynamicStub.declare(propName, propType);
46) }
47) /**---- 注:如果不需要实现Map接口,下列代码可以不拷入目标类中 ----*/
48) /**--------------- for Map Implementation ---------------*/
49) public Object get(Object key) {
50) return _dynamicStub.get(key);
51) }
52) public Object put(Object key, Object value) {
53) return _dynamicStub.put(key, value);
54) }
55) public void putAll(Map t) {
56) _dynamicStub.putAll(t);
57) }
58) public Object remove(Object key) {
59) return _dynamicStub.remove(key);
60) }
61) public void clear() {
62) _dynamicStub.clear();
63) }
64) public boolean containsKey(Object key) {
65) return _dynamicStub.containsKey(key);
66) }
67) public boolean containsValue(Object value) {
68) return _dynamicStub.containsValue(value);
69) }
70) public Set keySet() {
71) return _dynamicStub.keySet();
72) }
73) public Collection values() {
74) return _dynamicStub.values();
75) }
76) public Set entrySet() {
77) return _dynamicStub.entrySet();
78) }
79) public boolean isEmpty() {
80) return _dynamicStub.isEmpty();
81) }
82) public int size() {
83) return _dynamicStub.size();
84) }
}
注:DynamicBeanImpl同时实现了DynamicBean和Map接口。
相关说明:
1)可以通过两种方式让其他普通Javabean获得动态属性的特性
a)继承DynamicBeanImpl类就自动获得动态属性特性;
b)目标Javabean声明实现DynamicBean或Map接口,而有关接口方法的具体实现,则委托给DynamicBeanImpl
示例代码如下:
1) 改造方式1的示例代码如下:
1) /**
2) * 通过继承机制直接获得动态属性特性的扩展类
3) * @author Tu_Minglei
4) */
5) public class MyTestBean extends DynamicBeanImpl {
6) private Long id;
7) private String name;
8) private Object value;
9)
10) public Long getId() {
11) return id;
12) }
13) public void setId(Long id) {
14) this.id = id;
15) }
16) public String getName() {
17) return name;
18) }
19) public void setName(String name) {
20) this.name = name;
21) }
22) public Object getValue() {
23) return value;
24) }
25) public void setValue(Object value) {
26) this.value = value;
27) }
}
2) 改造方式2的示例代码如下:
1) /**
2) * 通过接口+聚合机制获得动态属性特性的扩展类
3) * @author Tu_Minglei
4) */
5) public class MyTestBean2 implements DynamicBean,Map {
6) private Long id;
7) private String name;
8) private Object value;
9)
10) public Long getId() {
11) return id;
12) }
13) public void setId(Long id) {
14) this.id = id;
15) }
16) public String getName() {
17) return name;
18) }
19) public void setName(String name) {
20) this.name = name;
21) }
22) public Object getValue() {
23) return value;
24) }
25) public void setValue(Object value) {
26) this.value = value;
27) }
28)
29) @Override
30) public String toString(){
31) return "[id:"+id+",name:"+name+",value:"+value+"]";
32) }
33)
34) /**++++++++++++++++++++++++++++++++++++++++++++++++++++++
35) * 说明:以下代码可以原封不动的拷入目标类中
36) **++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
37) DynamicBeanImpl _dynamicStub = new DynamicBeanImpl(this);
38) public Object get(String propName) {
39) return _dynamicStub.get(propName);
40) }
41) public void set(String propName, Object value) {
42) _dynamicStub.set(propName, value);
43) }
44) public void declare(String propName, Class propType) {
45) _dynamicStub.declare(propName, propType);
46) }
47) /**---- 注:如果不需要实现Map接口,下列代码可以不拷入目标类中 ----*/
48) /**--------------- for Map Implementation ---------------*/
49) public Object get(Object key) {
50) return _dynamicStub.get(key);
51) }
52) public Object put(Object key, Object value) {
53) return _dynamicStub.put(key, value);
54) }
55) public void putAll(Map t) {
56) _dynamicStub.putAll(t);
57) }
58) public Object remove(Object key) {
59) return _dynamicStub.remove(key);
60) }
61) public void clear() {
62) _dynamicStub.clear();
63) }
64) public boolean containsKey(Object key) {
65) return _dynamicStub.containsKey(key);
66) }
67) public boolean containsValue(Object value) {
68) return _dynamicStub.containsValue(value);
69) }
70) public Set keySet() {
71) return _dynamicStub.keySet();
72) }
73) public Collection values() {
74) return _dynamicStub.values();
75) }
76) public Set entrySet() {
77) return _dynamicStub.entrySet();
78) }
79) public boolean isEmpty() {
80) return _dynamicStub.isEmpty();
81) }
82) public int size() {
83) return _dynamicStub.size();
84) }
}
注:DynamicBeanImpl同时实现了DynamicBean和Map接口。
发表评论
- 浏览: 3578 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
一个大型网站系统的架构建 ...
王者之剑 7 小时前谢谢分享,不过交友网站算是什么大型网站?我估计你们老板的意思 ...
-- by tminglei -
一个大型网站系统的架构建 ...
谢谢分享,不过交友网站算是什么大型网站?我估计你们老板的意思就是让人能注册信息, ...
-- by 王者之剑 -
一个大型网站系统的架构建 ...
很喜欢博主的分享精神;不管内容如何,敢拿出来跟大家交流就是好的。看到有人在回复中 ...
-- by pf_miles -
规则框架方案(草案)
下载这个方案文档的人可能会有点失望,因为这个方案远谈不上出色和完善。不过,当发现 ...
-- by tminglei -
一个大型网站系统的架构建 ...
Wallian_hua 9 小时前不是我说你。。 你很没职业道德。。。。---- ...
-- by tminglei






评论排行榜