实现目标
循环访问对象的每个属性
String类型,值为null设置为无
String类型,值为空值设置为空
LocalDateTime,ZonedDateTime类型进行格式化
- setAccessible(true) 设置对象的可访问性,设置为true,private的也可以进行访问
- getField() 只能获取public的,包括从父类继承来的字段
- getDeclaredField() 可以获取当前类所有的字段,包括private的,但是不能获取继承来的字段
private void cyclicProperties(Object object) throws IllegalAccessException, NoSuchFieldException {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
for(Field field : object.getClass().getDeclaredFields()){
field.setAccessible(true);
if(field.get(object) == null && field.getType().equals(String.class)){
field.set(object,"无");
}
if(field.getType().equals(String.class) && StringUtils.isBlank(String.valueOf(field.get(object)))){
field.set(object,"空");
}
if((field.getType().equals(LocalDateTime.class) || field.getType().equals(ZonedDateTime.class))&& field.get(object) != null){
Field dateField = object.getClass().getDeclaredField(field.getName()+"Str");
dateField.setAccessible(true);
dateField.set(object,df.format((Temporal)field.get(object)));
}
}
}
FieldUtils属性工具类
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
private void initCodeValue(Object content) {
//获取类的所有属性
Field[] fields = FieldUtils.getAllFields(content.getClass());
//获取指定属性
Field targetField = FieldUtils.getField(content.getClass(), "name", true);
}