package com.nemo.web.modules.map.utils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.map.HashedMap;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.Map;
/** * Created by nemo on 16-6-23. * Bean 操作类 */
public class BeanUtil {
/**
* // Map --> Bean 2: 利用org.apache.commons.beanutils 工具类实现 Map --> Bean
* @param map
* @param obj
* @return
*/
public static Object transMap2Bean2(Map, Object> map, Object obj) {
if (map == null || obj == null) {
return new Object();
}
try {
BeanUtils.populate(obj, map);
} catch (Exception e) { System.out.println("transMap2Bean2 Error " + e);
}
return obj;
}
/**
* Map --> Bean 1: 利用Introspector,PropertyDescriptor实现 Map --> Bean
* @param map
* @param obj
* @return
*/ public static Object transMap2Bean(Map, Object> map, Object obj) { try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName();
if (map.containsKey(key)) { Object value = map.get(key); // 得到property对应的setter方法
Method setter = property.getWriteMethod();
setter.invoke(obj, value);
} } } catch (Exception e) { System.out.println("transMap2Bean Error " + e);
}
return obj;
}
/**
* Bean --> Map 1: 利用Introspector和PropertyDescriptor 将Bean --> Map
* @param obj
* @return
*/
public static Map, Object> transBean2Map(Object obj) {
if(obj == null){
return null;
} Map, Object> map = new HashedMap();
try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); // 过滤class属性
if (!key.equals("class")) { // 得到property对应的getter方法
Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
} } } catch (Exception e) { System.out.println("transBean2Map Error " + e);
}
return map;
} }
上一个文章:addActive