mport java.beans.BeanInfo;importjava.beans.IntrospectionException;importjava.beans.Introspector;importjava.beans.PropertyDescriptor;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;importcom.bh.bean.User;public classTest {/*** bean转map*/
publicTest() {try{
Map user=beanTransformToMap(new User(1, "zs"));
Iterator> iterator =user.entrySet().iterator();while(iterator.hasNext()){
Entry next =iterator.next();
System.out.println(next.getKey()+" "+next.getValue());
}
}catch (IllegalAccessException | IllegalArgumentException |InvocationTargetException|IntrospectionException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}/**map转实体
*@parammap
*@return*@throwsIllegalAccessException
*@throwsIllegalArgumentException
*@throwsInvocationTargetException
*@throwsIntrospectionException*/
private User mapTransformToBean(Map map) throwsIllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException{
User user=newUser();
BeanInfo beanInfo=Introspector.getBeanInfo(user.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(user, value);
}
}returnuser;
}/**实体转map
*@paramuser
*@return*@throwsIllegalAccessException
*@throwsIllegalArgumentException
*@throwsInvocationTargetException
*@throwsIntrospectionException*/
private Map beanTransformToMap(User user) throwsIllegalAccessException, IllegalArgumentException, InvocationTargetException, IntrospectionException{
Map map = new HashMap();
BeanInfo beanInfo=Introspector.getBeanInfo(user.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(user);
map.put(key, value);
}
}returnmap;
}public static voidmain(String[] args) {newTest();
}
}