本篇文章給大家分享的是有關(guān)java項目中Map與Object如何實現(xiàn)相互轉(zhuǎn)換,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)致力于網(wǎng)站設(shè)計制作、成都網(wǎng)站制作,成都網(wǎng)站設(shè)計,集團網(wǎng)站建設(shè)等服務(wù)標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
java Map轉(zhuǎn)Object與 Object轉(zhuǎn)Map
1、定義一個實體類:
package reflect; public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2、Map轉(zhuǎn)Object轉(zhuǎn)換如下:
package reflect; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; public class testMapToObject { public static void main(String[] args){ //假設(shè)有一個Map存放了一個對象的姓名和年齡 Mapmap = new HashMap (); map.put("name", "Kobi"); map.put("age", 39); User user = transferMapToUser(map,User.class); System.out.println(user.getName()); System.out.println(user.getAge()); } public static T transferMapToUser(Map map,Class classT){ try { return transfer(map,classT.newInstance()); } catch (InstantiationException ex) { System.out.println("what the fuck?"); } catch (IllegalAccessException ex) { System.out.println("what the fuck?"); } return null; } public static T transfer(Map map,Object obj){ try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); if (map.containsKey(key)) { Object value = map.get(key); // 得到property對應(yīng)的setter方法 Method setter = property.getWriteMethod(); try { setter.invoke(obj, value); } catch (IllegalArgumentException ex) { System.out.println("what the fuck?"); } } } } catch (Exception ex) { System.out.println("what the fuck?"); } return (T) obj; } }
運行結(jié)果:
run: Kobi 39 成功構(gòu)建 (總時間: 0 秒)
3、Object轉(zhuǎn)Map:
package reflect; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.Map; import java.util.TreeMap; public class testObjectToMap { public static void main(String[] args){ User user = new User(); user.setName("Kobi"); user.setAge(39); Mapmap = transBean2Map(user); System.out.println(map); } public static Map transBean2Map(Object obj) { if (obj == null) { return null; } TreeMap map = new TreeMap<>(); try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); // 過濾class屬性 if (key.equals("class")) { continue; } // 得到property對應(yīng)的getter方法 Method getter = property.getReadMethod(); Object value = getter.invoke(obj); map.put(key, value); } } catch (Exception e) { System.out.println("transBean2Map Error " + e); } return map; } }
運行結(jié)果:
run: {age=39, name=Kobi} 成功構(gòu)建 (總時間: 0 秒)
以上就是java項目中Map與Object如何實現(xiàn)相互轉(zhuǎn)換,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。