@Builder
@NoArgsConstructor
@AllArgsConstructor
public final class ShowStudentInfo {
private String name = "default";
private int age = -1;
@Override
public String toString() {
return "SHOW STUDENT INFO: " + (StringUtils.isNotBlank(name) ? "name = " + name : "")
+ (age > -1 ? ", age = " + age : "");
}
}
public static void main(String[] args) {
// Builder 形式创建 ShowStudentInfo 的实例的 age 居然是 0,不是默认值 -1
ShowStudentInfo tmp = ShowStudentInfo.builder().name("asdf").build();
System.out.println(tmp.toString());
// Builder 形式创建 ShowStudentInfo 的实例的 age 是默认值 -1
ShowStudentInfo tmp2 = new ShowStudentInfo();
System.out.println(tmp2.toString());
}
---output----
SHOW STUDENT INFO: name = asdf, age = 0
SHOW STUDENT INFO: name = default
Java builder 和 new 创建对象时默认值处理方式不一样
于 2024-06-07 18:53:12 首次发布