最近实现一个command模式,需要将web端的formbean作为参数传至EJB端,考虑到EJB端存取参数的一致性,故将
formbean动态组装成map,具体代码如下:
(1)下面是一个简单的bean
package cn.com.webmaker;
public class PersonBean extends BaseBean {
private String name;
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(2)下面是 PersonBean 继承的BaseBean,只有一个toHashMap方法
package cn.com.webmaker;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
public class BaseBean {
/**
* 根据字段值动态组装map
*
* @return
*/
public HashMap toHashMap() {
HashMap map = new HashMap();
Class c = this.getClass();
// 根据子类声明的field循环取值
for (int i = 0; i < c.getDeclaredFields().length; i++) {
try {
// 获取field
Field f = c.getDeclaredFields()[i];
String key = f.getName();
// 执行对应的get方法
String method = "get" + key.substring(0, 1).toUpperCase() + key.substring(1);
Class pTypes[] = new Class[0];
Method myMethod = c.getMethod(method, pTypes);
Object[] arg = new Object[0];
Object res = myMethod.invoke(this, arg);
// 保存
map.put(key, res);
} catch (Exception e) {
// 返回空
return null;
}
}
return map;
}
}
(3)测试方法
package cn.com.webmaker;
public class test {
public static void main(String[] args) {
PersonBean pb = new PersonBean();
pb.setName("ccc");
pb.setAge("25");
System.out.println(pb.toHashMap().toString());
}
}
程序输出预期的 {age=25, name=ccc}
Java Bean转Map实践
本文介绍了一种将Java Bean转换为Map的方法,通过反射机制实现了PersonBean类的属性到Map的动态映射,便于参数传递。
2万+

被折叠的 条评论
为什么被折叠?



