簡體   English   中英

java Builder類中的其他方法(lombok注釋)

[英]Additional methods in java Builder class (lombok annotation)

所以,我有使用@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(); 

我的問題是,在這個類中添加一些額外的方法是否是一個好習慣? 或者我應該保持原樣並在外面做任何業務邏輯?

基本上,讓我們說,我需要一個幫助方法來設置myField3屬性,因為我不能只做:

  .myField3("value for field 3") .build() 

我需要對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;
        }
    }
}

以下是使用您的課程的示例,

MyModel model = MyModel.builder()
                .myField1("value for field 1")
                .myField2("value for field 2")
                .myField3("value for field 3")
                .build();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM