java根据反射给实体类为空的属性值设置默认值
/*** 属性值为null和空的时候设置默认值** @param demo 实体类*/private static void defaultValue(Object demo) {try {Class<?> aClass = demo.getClass();Field[] declaredFields = aClass.getDeclaredFields();List<Strin
·
/**
* 属性值为null和空的时候设置默认值
*
* @param demo 实体类
*/
private static void defaultValue(Object demo) {
try {
Class<?> aClass = demo.getClass();
Field[] declaredFields = aClass.getDeclaredFields();
List<String> fieldName = new ArrayList<>();
for (Field field : declaredFields) {
field.setAccessible(true);
String name = field.getName();
if (!"".equals(name)) {
fieldName.add(name);
}
}
for (String s : fieldName) {
Method method = aClass.getMethod("get" + s.substring(0, 1).toUpperCase() + s.substring(1));
Object invoke = method.invoke(demo);
if (invoke == null || "".equals(invoke)) {
Field field = aClass.getDeclaredField(s);
field.setAccessible(true);
String typeName = field.getGenericType().getTypeName();
if (typeName.contains("String")) {
field.set(demo, "1");
} else if (typeName.contains("Integer")) {
field.set(demo, 0);
} else if (typeName.contains("Double")) {
field.set(demo, 0.0);
} else if (typeName.contains("BigDecimal")) {
field.set(demo, BigDecimal.valueOf(0));
} else if (typeName.contains("Date")) {
field.set(demo, new Date());
} else if (typeName.contains("Boolean")) {
field.set(demo, true);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
测试
/** 创建User实体类 */
@Data
public class User {
private Integer id;
private String name;
private String sex;
private Date loginDate;
private boolean isState;
}
public static void main(String[] args) {
User user = new User();
user.setId(1);
user.setIsState(false);
System.out.println("设置默认值之前 = "+user);
//设置默认值之前 = User(id=1, name=null, sex=null, loginDate=null, isState=false)
defaultValue(user);
System.out.println("设置默认值后 = "+user);
//设置默认值后 = User(id=1, name=1, sex=1, loginDate=Tue May 03 17:10:06 CST 2022, isState=false)
}
更多推荐
已为社区贡献2条内容
所有评论(0)