使用反射將map轉為對象,如果不使用反射的話需要一個get一個set寫起來麻煩,並且不通用,所以寫了一個通用的方法將map集合轉為對象,直接看代碼,注釋也都挺清楚的
public static <T> T map2Object(Map<String, Object> map, Class<T> clazz) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (map == null) { return null; } T obj = null; try { // 使用newInstance來創建對象 obj = clazz.newInstance(); // 獲取類中的所有字段 Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { int mod = field.getModifiers(); // 判斷是擁有某個修飾符 if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { continue; } // 當字段使用private修飾時,需要加上 field.setAccessible(true); // 獲取參數類型名字 String filedTypeName = field.getType().getName(); // 判斷是否為時間類型,使用equalsIgnoreCase比較字符串,不區分大小寫 // 給obj的屬性賦值 if (filedTypeName.equalsIgnoreCase("java.util.date")) { String datetimestamp = (String) map.get(field.getName()); if (datetimestamp.equalsIgnoreCase("null")) { field.set(obj, null); } else { field.set(obj, sdf.parse(datetimestamp)); } } else { field.set(obj, map.get(field.getName())); } } } catch (Exception e) { e.printStackTrace(); } return obj; }