把一个对象转换成Map,使用BeanWrapperImpl
import org.springframework.beans.BeanWrapperImpl;
public class User {
?private String name;
?private Date birthday;
?private String[] addrs;
?public static void main(String[] args) {
??//测试把一个对象转换成Map
??User user=new User();
??user.setName("张伟");
??user.setBirthday(new Date());
??user.setAddrs(new String[]{"北京","郑州","沈阳","合肥"});
??
??Map userMap=user.toMap();
??/*
??Set set=userMap.entrySet();
??Iterator it=set.iterator();
??while(it.hasNext()){
???System.out.print(it.next());
??}*/
??Set keys=userMap.keySet();
??String key=null;
??for(Object k:keys){
???key=(String)k;
???System.out.println("?key:"+key+"??value:"+userMap.get(key));
??}
?}
?public String getName() {
??return name;
?}
?public void setName(String name) {
??this.name = name;
?}
?public Date getBirthday() {
??return birthday;
?}
?public void setBirthday(Date birthday) {
??this.birthday = birthday;
?}
?public String[] getAddrs() {
??return addrs;
?}
?public void setAddrs(String[] addrs) {
??this.addrs = addrs;
?}
?public Map toMap() {
??BeanWrapperImpl beanWrapper = new BeanWrapperImpl(this);
??PropertyDescriptor[] alldescriptors = beanWrapper
????.getPropertyDescriptors();
??int length = alldescriptors.length;
??List list = new ArrayList();
??for (int i = 0; i < alldescriptors.length; i++) {
???if (alldescriptors[i].getReadMethod() != null
?????&& alldescriptors[i].getWriteMethod() != null) {
????list.add(alldescriptors[i]);
????System.out.println(alldescriptors[i].getDisplayName());
???}
??}
??PropertyDescriptor[] descriptors = (PropertyDescriptor[]) list
????.toArray(new PropertyDescriptor[0]);
??System.out.println(descriptors.length + " list.length=" + list.size());
??// toMap
??Map properties = new HashMap(descriptors.length);
??for (int i = 0; i < descriptors.length; i++) {
???String name = descriptors[i].getName();
???properties.put(name, beanWrapper.getPropertyValue(name));
??}
??
??Set keys = properties.keySet();
??String key = null;
??for (Object k : keys) {
???key = (String) k;
???System.out.println("key: " + key + "?value:" + properties.get(key));
??}
??return properties;
?}
}