该变种建造者可以强制用户按照某个顺序建造,并且防止了缺少字段
缺点:在必需的字段必须建造一个类
public static void main(String[] args) {
User user = User.builder()
.age(10)
.name("zhaojin");
System.out.println(user);
}
@Data
public static class User {
private String name;
private Integer age;
public static Age builder() {
User user = new User();
return user.new Age();
}
public class Age {
public Name age(Integer age) {
User.this.setAge(age);
return new Name();
}
}
public class Name {
public User name(String name) {
User.this.setName(name);
return User.this;
}
}
}