物件和map之間的相互轉化
阿新 • • 發佈:2018-12-11
物件和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;
}