首先需要了解下Builder模式:
定义一个User类:
public class User {
private String firstName;
private String lastName;
User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public static Builder builder() {
return new Builder();
}
public static class Builder {
String firstName;
String lastName;
Builder firstName(String value) {
this.firstName = value;
return this;
}
Builder lastName(String value) {
this.lastName = value;
return this;
}
public User build() {
return new User(firstName, lastName);
}
}
}
则可以通过链式调用的方式为User的属性赋值:
User user = User.builder()
.firstName("san")
.lastName("zhang")
.build();
之所以能够链式调用是因为User.Builder类中的firstName()和lastName()方法返回的都是Builder对象。
而@Builder注解的使用可以大大简化代码:
@Builder
public class User {
private String firstName;
private String lastName;
}
在使用时和之前一样:
User user = User.Build()
.firstName("san")
.lastName("zhang")
.build();