相關(guān)API
java.beans.Introspector 1.1
- static BeanInfo getBeanInfo(Class<?> beanClass)
獲取指定類的bean信息
java.beans.BeanInfo 1.1
- PropertyDescriptor[] getpropertyDescriptors()
返回bean屬性的描述符脐供。如果返回null,則表示應(yīng)該用命名規(guī)則來查找屬性星岗。
java.beans.PropertyDescriptor 1.1
- Method getReadMethod()
- Method getWriteMethod()
返回獲取和設(shè)置屬性的方法胚宦。
java.beans.FeatureDescriptor 1.1
- String getName()
獲取該特性在程序中的名字首有。(屬性/方法/事件的編程名稱)
java.lang.reflect
- Object invoke(Object obj,Object... args)
對(duì)帶有指定參數(shù)的指定對(duì)象調(diào)用由此 Method 對(duì)象表示的底層方法。
java.lang.Class<T>
- T newInstance()
創(chuàng)建此 Class 對(duì)象所表示的類的一個(gè)新實(shí)例枢劝。
代碼
public class BeanUtils {
private BeanUtils() {
}
public static <T> T mapToBean(Map<String, Object> map, Class<T> clzss) throws Exception {
T instance = clzss.newInstance();
BeanInfo beanInfo = Introspector.getBeanInfo(clzss, Object.class);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
propertyDescriptor.getWriteMethod().invoke(instance, map.get(propertyDescriptor.getName()));
}
return instance;
}
public static Map<String,Object> beanToMap(Object object) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
Map<String, Object> map = new HashMap<>();
BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass(), Object.class);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
Object invoke = propertyDescriptor.getReadMethod().invoke(object);
map.put(propertyDescriptor.getName(), invoke);
}
return map;
}
}