我有一個(gè)班級(jí)Userpublic 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; }}所以我可以使用它初始化它,并且在初始化后,我仍然可以通過(guò).User user = new User().withFirstName("Tom").withAge(30);useruser.withLastName("Bob").withAge(31);如何利用龍目島來(lái)保存“withXXX”方法?@Builder不是為此用例設(shè)計(jì)的。
1 回答

陪伴而非守候
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
試試這個(gè):
@Data
@Builder
@Accessors(fluent = true) // <— This is what you want
public class User {
private final String firstName;
private final String lastName;
private final int age;
}
然后使用:
User user = User.builder()
.firstName("foo")
.lastName("bar")
.age(22)
.build();
稍后:
user.setFirstName("baz").setAge(23); // fluent setters
注意如何通過(guò)使所有字段變得不可變(最佳實(shí)踐)。如果需要可變性,請(qǐng)刪除關(guān)鍵字。Userfinalfinal
添加回答
舉報(bào)
0/150
提交
取消