java model 转 Map

 1 import java.lang.reflect.Field;
 2 import java.lang.reflect.InvocationTargetException;
 3 import java.lang.reflect.Method;
 4 import java.lang.reflect.Modifier;
 5 import java.util.ArrayList;
 6 import java.util.Arrays;
 7 import java.util.HashMap;
 8 import java.util.List;
 9 import java.util.Map;
10 /**
11  * model工具类
12  * @author huhj
13  *
14  */
15 public class ModelUtils {
16  
17     /**
18      * 将model转化为map
19      * @param model
20      * @return
21      */
22     public static Map<String, Object> modelToMap(Object model) {
23         if (model == null) {
24             return new HashMap<String, Object>();
25         }
26         Map<String, Object> map = new HashMap<String, Object>();
27         Method method;
28         Field[] fields1 = model.getClass().getSuperclass().getDeclaredFields(); // 超类属性
29         Field[] fields2 = model.getClass().getDeclaredFields(); // 本类属性
30         List<Field> list = new ArrayList<Field>(Arrays.asList(fields1));
31         List<Field> list2 = Arrays.asList(fields2);
32         list.addAll(list2);
33         for (Field field : list) {
34             boolean isStatic = Modifier.isStatic(field.getModifiers());
35             if(isStatic) {
36                 continue;    //去除静态成员
37             }
38             String getMethodName = getMethodName(field.getName());
39             try {
40                 method = model.getClass().getMethod(getMethodName);
41                 map.put(field.getName(), method.invoke(model));
42             } catch (NoSuchMethodException | SecurityException e) {
43                 e.printStackTrace();
44             } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
45                 e.printStackTrace();
46             }
47         }
48         return map;
49     }
50  
51     private static String getMethodName(String name) {
52         if (name != null && name.length() > 2) {
53             return "get" + name.substring(0, 1).toUpperCase() + name.substring(1);
54         }
55         return name;
56     }
57  
58 }