簡體   English   中英

如何覆蓋 lombok 構建器方法

[英]How to override lombok builder method

我想覆蓋 Lombok 默認構建器方法。 我試過這段代碼,但它不起作用。

甚至有可能做這樣的事情嗎?

@Data
@Builder
static class A {
    private int a;

    static class Builder {
        A.ABuilder a(int x) {
            this.a = 2 * x;
            return this;
        }
    }

}

private static void fun() {
    var a = A.builder()
            .a(1)
            .build();
}

在此處輸入圖像描述

您創建的構建器名稱必須與 Lombok 創建的默認構建器名稱相匹配。

這行得通,

public static class ABuilder {
    ABuilder a(int x) {
        this.a = 2 * x;
        return this;
    }
}

更多詳細信息 - 在 Lombok 的構建器中使用自定義設置器

出於某種原因,如果您想以不同的方式命名 Builder class,請使用Builder注釋的builderClassName

@Data
@Builder (builderClassName = "MyBuilderClass")
static class A {
    private int a;

    static class MyBuilderClass {
        MyBuilderClass a(int x) {
            this.a = 2 * x;
            return this;
        }
    }
}

試試這個

@Data
@Builder
public class A {
    private int a;
    private int b;

    public static class ABuilder {
        A.ABuilder a(int x) {
            this.a = 2 * x;
            return this;
        }
    }

  public static void main(String[] args) {
      A aObj = A.builder().a(4).b(10).build();
    System.out.println(aObj);
  }
}

暫無
暫無

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

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