有一个同事反馈,说是实体类如果返回null的时候,能不能返回中划线(-),我们一般做法是不是每个属性值都要先判断一下,但是有的实体类(Entity)属性值特别多,这样每个都设置,是不是很麻烦的!
后来通过反射机制可以对属性很好的处理,设置一个初始值
1、首先定义一个实体类
public class Car {
private String name;
private String junitString;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJunitString() {
return junitString;
}
public void setJunitString(String junitString) {
this.junitString = junitString;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {this.age = age;}}
2、通过反射机制处理
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException{
Car car = new Car();
car.setName("张三");
Class<Car> cls = Car.class;
Field[] filFields = cls.getDeclaredFields();
for (Field field : filFields) {
// 获取属性值名称
System.out.println("field:" + field.getName());
// 私有的成员是受保护的,不能直接访问
field.setAccessible(true);
// 获取属性的类型
String type = field.getGenericType().toString();
// 获取属性值
Object value = field.get(car);
if(value == null && type.equals("class java.lang.String")) {
field.set(car, "-");
}
}
}
网友评论