简体   繁体   English

Lombok构建器包范围

[英]Lombok builder package scope

I would like to generate package-scope builder using Lombok , but I'm not sure if it's possible (I didn't find any clues in documentation ). 我想使用Lombok生成package-scope构建器,但我不确定它是否可行(我没有在文档中找到任何线索)。

By default Lombok generates public builder, ie this code: 默认情况下,Lombok生成public构建器,即此代码:

@Builder
class User {

    private final String name;
}

Is translated into this: 翻译成这个:

class User {
    private final String name;

    User(final String name) {
        this.name = name;
    }

    public static User.UserBuilder builder() { // <-- how to make it package-private?
        return new User.UserBuilder();
    }

    public static class UserBuilder { // <-- how to make it package-private?
        private String name;

        UserBuilder() {
        }

        public User.UserBuilder name(final String name) {
            this.name = name;
            return this;
        }

        public User build() {
            return new User(this.name);
        }

        public String toString() {
            return "User.UserBuilder(name=" + this.name + ")";
        }
    }
}

Is there any way to generate builder class without this leading public keyword? 有没有办法生成没有这个领先的public关键字的构建器类?

Check out the below in the @Builder documentation : 请查看@Builder文档中的以下内容

@Builder(access = AccessLevel.PACKAGE) is legal (and will generate the builder class, the builder method, etc with the indicated access level) starting with lombok v1.18.8 @Builder(access = AccessLevel.PACKAGE)是合法的(并将生成具有指示的访问级别的构建器类,构建器方法等)从lombok v1.18.8开始

And if you see the source code of Builder here , you'll see that by default, the access level of a @Builder would be lombok.AccessLevel.PUBLIC , but can be made package-private with @Builder(access = AccessLevel.PACKAGE) . 如果你看到生成器的源代码, 在这里 ,你会看到,默认情况下,访问级别@Builderlombok.AccessLevel.PUBLIC ,但可以制成包装和私营部门与@Builder(access = AccessLevel.PACKAGE)

Also FYI, the following access levels are supported by @Builder : PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE . 另外,仅供参考, @Builder支持以下访问级别: PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE This is via the AccessLevel enum's source code here . 这是通过AccessLevel枚举的源代码在这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM