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();
}
}
测试
@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);
defaultValue(user);
System.out.println("设置默认值后 = "+user);
}