我有课User
public class User {
private String firstName;
private String lastName;
private int age;
public User withFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public User withLastName(String lastName) {
this.lastName = lastName;
return this;
}
public User withAge(int age) {
this.age = age;
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
所以我可以使用 来初始化它User user = new User().withFirstName("Tom").withAge(30);,user初始化后,我仍然可以通过 来修改它user.withLastName("Bob").withAge(31);。
如何利用 Lombok 保存“withXXX”方法?@Builder 不是针对此用例设计的。
尝试这个:
\n\n@Data\n@Builder\n@Accessors(fluent = true) // <\xe2\x80\x94 This is what you want\npublic class User {\n private final String firstName;\n private final String lastName;\n private final int age;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n然后使用:
\n\nUser user = User.builder()\n .firstName("foo")\n .lastName("bar")\n .age(22)\n .build();\nRun Code Online (Sandbox Code Playgroud)\n\n然后:
\n\nuser.setFirstName("baz").setAge(23); // fluent setters\nRun Code Online (Sandbox Code Playgroud)\n\n请注意如何User通过将所有字段设置为不可变(最佳实践)final。如果您想要可变性,请删除final关键字。
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |