改行了,不再做软件开发了,之前工作中做过的一些有价值的东西陆续发布在这,希望对其他人有用。

相关说明:
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接口。
  • DynamicBean.rar (4.4 KB)
  • 描述: 动态属性工具类--源码
  • 下载次数: 15
评论
发表评论

您还没有登录,请登录后发表评论

tminglei
搜索本博客
最近加入圈子
最新评论