当前位置: 首页 > 知识库问答 >
问题:

如何使用lombok生成private builder()方法

葛高澹
2023-03-14

我正在使用lombok@Builder。当我将@Builder注释放在MyExample类上时,@Builder生成公共Builder()方法。但是我想创建私有的builder()方法。不幸的是,@Builder注释没有访问选项。我该怎么办?

共有2个答案

祖浩淼
2023-03-14

您可以这样使用注释:@Builder(access=AccessLevel。PRIVATE).

徐智渊
2023-03-14

您可以覆盖生成的生成器方法以使其私有。据我所知,这是唯一的办法:

@Builder
public static class Foo<F, T> {

    // hide lombok's builder method:
    private static FooBuilder builder() {
        return new FooBuilder();
    }

}

但是,这使您能够对生成器进行更高级的初始化。例如,可以使用一些默认值初始化生成器,也可以使用用户提供的初始值启动生成器。

下面是一个例子:

@Builder
public static class Car {

    // kickstart builder method available to user
    public static CarBuilder builder(String brand, String model) {
        return builder().brand(brand).model(model);
    }

    // hide lombok's own builder method and apply some defaults:
    private static CarBuilder builder() {
        return new CarBuilder().color(System.getenv("DEFAULT_CAR_COLOR"));
    }

}
 类似资料:
  • 使用Lombok使用Eclipse/Maven生成代码。希望能够在文本中查看正在生成的类。在目标下四处搜寻,但什么也没看到。有没有办法让Lombok输出生成的类?

  • MapStruct知道源状态检查,并且默认情况下使用状态检查器方法(如果存在的话)来验证目标对象中的字段是否应该使用源对象中的值更新。没有状态检查器,MapStruct默认只更新非空值的字段。 我想在REST控制器中使用DTO来使用MapStruct的source presence checknig实现部分更新策略,但是由于我使用Lombok来生成getter和setter,所以我还想生成sour

  • 解决方案: 我不得不更改我的和的顺序。 我必须将放在之上,然后它就起作用了。 我将下面的pom更新到工作版本,所以这里没有非工作代码。 我还将lombok版本转换回当前版本,而不是使用edge版本。 原始问题: 我有2个或多或少相同的类集(见下面的示例) 一组是我的API的DTO,我希望它是不可变的,使用Lombok的@Value和@Builder 一组是要存储在数据库中的实体。使用Lombok的

  • 我想有一种简单的方法来构建测试数据,并发现生成器模式非常适合这里描述的情况。然而,为了减少组件测试中的样板代码,甚至更多,我发现来自龙目岛项目的@Builder是一个很好的候选人。然而,我找不到任何关于如何在方法上使用它的留档或在线示例。我想在某种工厂方法上使用,因为我不能对实现进行任何更改。 有人能举例说明如何在方法上实际使用?

  • 我正在使用Cucumber for Java 我没有使用来配置要使用的步骤或功能。我正在使用方法 它的一切工作发现,但我想生成一个报告的结果。我正在阅读有关它的信息,要配置它,我需要使用,如下所示: 如何使用该方法配置它??

  • 假设我有一个lombok注释类 我知道我能做到: 类似于: 我在龙目岛的文件里找不到这个。