有没有遇到这种情况的码友。一个实体类有很多很多属性,在写逻辑的时候,你需要将实体类中的属性一个一个的放进map对象中,然后再去写其他逻辑。总之很费劲。
使用反射前:
User user = new User();
Map map = new HashMap<>();
map.put("id",1);
map.put("name":"xxx");
......此处省略1000个map.put,这就不需要写逻辑了,这就1000行代码了。而且很费时间
使用反射后:
/**
* 利用反射将实体对象转换成map对象
* @param entity
* @return
*/
public static Map<String, Object> convertEntityToMap(Object entity) {
Map<String, Object> map = new HashMap<>();
Class<?> clazz = entity.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true); // 设置访问私有字段
String fieldName = field.getName();
try {
Object fieldValue = field.get(entity);
map.put(fieldName, fieldValue);
} catch (IllegalAccessException e) {
e.printStackTrace();
// 处理访问异常
logger.info("实体对象转换MAP时发生意外。");
}
}
return map;
}
public static void main(String[] args) {
// 创建实体类对象
Person person = new Person();
person.setName("John");
person.setAge(30);
person.setAddress("123 Main St");
// 将实体类转换为 Map 对象
Map<String, Object> map = EntityToMapConverter.convertEntityToMap(person);
// 输出转换后的 Map 对象
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
上述代码输出的结果:
name: John
age: 30
address: 123 Main St
世界突然开朗了…而且很简单