1、定义一个实体类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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转Object转换如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
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){ //假设有一个Map存放了一个对象的姓名和年龄 Map<string,object> map = new HashMap<string,object>(); 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> T transferMapToUser(Map<string,object> map,Class<t> 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> T transfer(Map<string,object> 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对应的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; } } |
运行结果:
1
2
3
4
|
run: Kobi 39 成功构建 (总时间: 0 秒) |
3、Object转Map:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
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 ); Map<string, object= "" > map = transBean2Map(user); System.out.println(map); } public static Map<string, object= "" > transBean2Map(Object obj) { if (obj == null ) { return null ; } TreeMap<string, object= "" > 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对应的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; } } |
运行结果:
1
2
3
|
run: {age= 39 , name=Kobi} 成功构建 (总时间: 0 秒) |
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://www.2cto.com/kf/201701/584920.html