java Map转Object与Object转Map实现代码
javaMap转Object与Object转Map
1、定义一个实体类:
packagereflect;
publicclassUser{
privateStringname;
privateintage;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
}
2、Map转Object转换如下:
packagereflect;
importjava.beans.BeanInfo;
importjava.beans.Introspector;
importjava.beans.PropertyDescriptor;
importjava.lang.reflect.Method;
importjava.util.HashMap;
importjava.util.Map;
publicclasstestMapToObject{
publicstaticvoidmain(String[]args){
//假设有一个Map存放了一个对象的姓名和年龄
Map<string,object>map=newHashMap<string,object>();
map.put("name","Kobi");
map.put("age",39);
Useruser=transferMapToUser(map,User.class);
System.out.println(user.getName());
System.out.println(user.getAge());
}
publicstatic<t>TtransferMapToUser(Map<string,object>map,Class<t>classT){
try{
returntransfer(map,classT.newInstance());
}catch(InstantiationExceptionex){
System.out.println("whatthefuck?");
}catch(IllegalAccessExceptionex){
System.out.println("whatthefuck?");
}
returnnull;
}
publicstatic<t>Ttransfer(Map<string,object>map,Objectobj){
try{
BeanInfobeanInfo=Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[]propertyDescriptors=beanInfo.getPropertyDescriptors();
for(PropertyDescriptorproperty:propertyDescriptors){
Stringkey=property.getName();
if(map.containsKey(key)){
Objectvalue=map.get(key);
//得到property对应的setter方法
Methodsetter=property.getWriteMethod();
try{
setter.invoke(obj,value);
}catch(IllegalArgumentExceptionex){
System.out.println("whatthefuck?");
}
}
}
}catch(Exceptionex){
System.out.println("whatthefuck?");
}
return(T)obj;
}
}
运行结果:
run: Kobi 39 成功构建(总时间:0秒)
3、Object转Map:
packagereflect;
importjava.beans.BeanInfo;
importjava.beans.Introspector;
importjava.beans.PropertyDescriptor;
importjava.lang.reflect.Method;
importjava.util.Map;
importjava.util.TreeMap;
publicclasstestObjectToMap{
publicstaticvoidmain(String[]args){
Useruser=newUser();
user.setName("Kobi");
user.setAge(39);
Map<string,object="">map=transBean2Map(user);
System.out.println(map);
}
publicstaticMap<string,object="">transBean2Map(Objectobj){
if(obj==null){
returnnull;
}
TreeMap<string,object="">map=newTreeMap<>();
try{
BeanInfobeanInfo=Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[]propertyDescriptors=beanInfo.getPropertyDescriptors();
for(PropertyDescriptorproperty:propertyDescriptors){
Stringkey=property.getName();
//过滤class属性
if(key.equals("class")){
continue;
}
//得到property对应的getter方法
Methodgetter=property.getReadMethod();
Objectvalue=getter.invoke(obj);
map.put(key,value);
}
}catch(Exceptione){
System.out.println("transBean2MapError"+e);
}
returnmap;
}
}
运行结果:
run:
{age=39,name=Kobi}
成功构建(总时间:0秒)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!