package beanutil;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
/**
* 描述:bean工具类
* @author duxing
* @version 0.1
*/
public class BeanUtil {
/**
* 描述:将一个map对象转化为bean
* @param map
* @param clss
* @return object
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static <K, V> Object transMapToBean(Map<K, V> map, Class clss) {
Object object = null;
try {
object = clss.newInstance();
for (Map.Entry<K, V> entry : map.entrySet()) {
Method methodType = clss.getMethod("get" + entry.getKey());
Method method = clss.getMethod("set" + entry.getKey(),
methodType.getReturnType());
method.invoke(object, entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
/**
* 描述:将一个map对象转化为bean
* @param params
* @param clss
*/
public static <K, V> void transMapToBean(Map<K, V> 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) {
e.printStackTrace();
}
}
/**
* 描述:利用Introspector和PropertyDescriptor 将Bean --> Map
* @param params
* @param clss
* @return map
*/
public static Map<String, Object> transBeanToMap(Object obj) {
if (obj == null) {
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
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) {
e.printStackTrace();
}
return map;
}
}