1. 程式人生 > >物件和map之間的相互轉化

物件和map之間的相互轉化

物件和map之間的相互轉化(使用反射完成)

1.物件轉化為map

    /**
     * 物件轉化為map
     * @param o 物件
     * @return 轉化成功的map
     * @throws IllegalAccessException 非法訪問異常
     */
    private static Map<String,Object> objectToMap(Object o) throws IllegalAccessException {
if(null == o){ return null; } Map<String,Object> map = new HashMap<>(); Field[] declaredFields = o.getClass().getDeclaredFields(); for (Field field :declaredFields) { // (此處如果不設定 無法獲取物件的私有屬性) field.setAccessible(true
); map.put(field.getName(),field.get(o)); } return map; }

2. map轉化為物件

    /**
     * map 轉化為物件
     * @param map 需要轉化的引數
     * @param aClass 要轉化成的物件
     * @return 轉化成功的物件
     * @throws IllegalAccessException 非法訪問異常
     * @throws InstantiationException 例項化異常
     */
private static Object mapToObject(Map<String,Object> map,Class<?> aClass) throws IllegalAccessException, InstantiationException { if(null == map || map.size()<=0){ return null; } Object o = aClass.newInstance(); Field[] declaredFields = o.getClass().getDeclaredFields(); for (Field field :declaredFields) { int modifiers = field.getModifiers(); if(Modifier.isStatic(modifiers) || Modifier.isFinal(modifiers)){ continue; } // (此處如果不設定 無法獲取物件的私有屬性) field.setAccessible(true); field.set(o,map.get(field.getName())); } return o; }