Java算法:反射实现map自动封装进实体类中 理解springmvc 参数封装底层原理

时间:2025-02-16 08:24:15
/** * 数据集封装进list中 - 有字段映射集 * @param ds * @param fieldMap * @param clazz * @param <T> * @return * @throws Exception */ private static <T> List<T> getInstance(List<Map<String, Object>> ds, Map<String, String> fieldMap, Class<T> clazz) throws Exception { ArrayList<T> result = new ArrayList<>(); for (Map<String, Object> data : ds) { Field[] declaredFields = clazz.getDeclaredFields(); Object newEntity = clazz.newInstance(); Set<String> keySet = fieldMap.keySet(); for (String s : keySet) { String mapName = fieldMap.get(s); for (Field field : declaredFields) { field.setAccessible(true); String name = field.getName(); if (name.equals(mapName)) { field.set(newEntity, data.get(s)); } } } result.add((T) newEntity); } return result; } /** * 数据集封装进list中 - 无字段映射集 * @param ds * @param clazz * @param <T> * @return * @throws Exception */ private static <T> List<T> getInstance(List<Map<String, Object>> ds, Class<T> clazz) throws Exception { ArrayList<T> result = new ArrayList<>(); for (Map<String, Object> data : ds) { Field[] declaredFields = clazz.getDeclaredFields(); Object newEntity = clazz.newInstance(); for (Field field : declaredFields) { field.setAccessible(true); String name = field.getName(); field.set(newEntity, data.get(name)); } result.add((T) newEntity); } return result; }