Bil*_*yfm 4 java annotations builder lombok java-annotations
所以,我有使用@Builder lombok注释的类.这是它的外观和我如何使用它:
import lombok.Builder;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonProperty;
@Data
@Builder
public class MyModel {
@JsonProperty(value = "myField1")
private String myField1;
@JsonProperty(value = "myField2")
private String myField2;
@JsonProperty(value = "myField3")
private String myField3;
}
//This is how I use it:
MyModel model = MyModel.builder()
.myField1("value for field 1")
.myField2("value for field 2")
.build();
Run Code Online (Sandbox Code Playgroud)
我的问题是,在这个类中添加一些额外的方法是否是一个好习惯?或者我应该保持原样并在外面做任何业务逻辑?
基本上,让我们说,我需要一个帮助方法来设置myField3属性,因为我不能只做:
.myField3("value for field 3")
.build()Run Code Online (Sandbox Code Playgroud)
我需要对field3执行一些值的操作,之后将其设置为MyModel.
那么我可以将这个辅助方法放到这个类中吗?
根据Lombok的Builder 文档,
如果该元素已经存在,则将以静默方式跳过每个列出的生成元素(忽略参数计数并仅查看名称).这包括构建器本身:如果该类已经存在,则lombok将简单地开始在此已存在的类中注入字段和方法,除非当然要存在要注入的字段/方法.您可能不会在构建器类上放置任何其他方法(或构造函数)生成lombok注释; 例如,您不能将@EqualsAndHashCode放在构建器类上.
那么我可以将这个辅助方法放到这个类中吗?
是的,你可以通过一个最小的构建器来提供一个与字段同名的方法,即myField3.可以将业务逻辑添加到此方法中.这是一个简单的例子,其中"Hello"前置于setter提供的值,
@Data
@Builder
public class MyModel {
private String myField1;
private String myField2;
private String myField3;
public static class MyModelBuilder {
public MyModelBuilder myField3(String myField3) {
this.myField3 = "Hello " + myField3;
return this;
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是使用您的课程的示例,
MyModel model = MyModel.builder()
.myField1("value for field 1")
.myField2("value for field 2")
.myField3("value for field 3")
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |