浏览 2502 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-16
import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; /** * 反射工具类 * 利用反射 get set 属性值 * bean <--> map * */ public class BeanReflectUtil { /** * get属性的值到Map * @param bean * @param valMap */ public static Map<Object, Object> getFieldValueMap(Object bean) { Map<Object, Object> valueMap = new HashMap<Object, Object>(); PropertyDescriptor[] props = getPropertyDescriptors(bean); for(PropertyDescriptor p:props){ Method getter = p.getReadMethod(); if(!"class".equals(p.getName())){ try { valueMap.put(p.getName(), getter.invoke(bean)); } catch (Exception e) { continue; } } } return valueMap; } /** * set属性的值到Bean * @param bean * @param valMap */ public static void setFieldValue(Object bean, Map<Object, Object> valMap) { PropertyDescriptor[] props = getPropertyDescriptors(bean); for(PropertyDescriptor p:props){ Method setter = p.getWriteMethod(); if(setter!=null){ try { setter.invoke(bean,valMap.get(p.getName())); } catch (Exception e) { continue; } } } } private static PropertyDescriptor[] getPropertyDescriptors(Object bean){ Class<?> cls = bean.getClass(); BeanInfo beanInfo = null; try { beanInfo = Introspector.getBeanInfo(cls); } catch (IntrospectionException e) { e.printStackTrace(); } return beanInfo.getPropertyDescriptors(); } public static void main(String[] args) { Test test = new Test(); Test sunTest = new Test(); sunTest.setId(2); Map<Object,Object> valMap =new HashMap<Object, Object>(); valMap.put("id", 1); valMap.put("nameTest", "nameTest1"); valMap.put("test", sunTest); valMap.put("name", "name1"); BeanReflectUtil.setFieldValue(test, valMap); valMap = BeanReflectUtil.getFieldValueMap(test); for(Object obj:valMap.keySet()){ System.out.println(obj + " ------ "+ valMap.get(obj)); } } } /** * 测试类 * @author user */ class Test{ private int id; //常规测试 private String namemethod; //测试用get方法后的名称 private String nameTest; //测试名称规范 private Test test; //测试对象 public String getName() { return namemethod; } public void setName(String name) { System.out.println("method: setName(String name)"); this.namemethod = name; } /** * 测试set时候执行那个方法、是否同时执行 */ public void setName(int name) { System.out.println("method: setName(int name)"); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNameTest() { return nameTest; } public void setNameTest(String nameTest) { this.nameTest = nameTest; } public Test getTest() { return test; } public void setTest(Test test) { this.test = test; } public String toString() { return "id:"+id+" name:"+namemethod; } } 不对之处,恳请指出。 -------------------------------------------------------------------------- 交流群:81552084 -------------------------------------------------------------------------- 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-08-16
https://code.google.com/p/joor/
|
|
返回顶楼 | |