把一个对象转换成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;
}
}