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秒)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!