3

我想使用Lombokpackage-scope生成构建器,但我不确定它是否可能(我在文档中没有找到任何线索)。

默认情况下,Lombok 会生成生成public器,即此代码:

@Builder
class User {

    private final String name;
}

被翻译成这样:

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 + ")";
        }
    }
}

public没有这个前导关键字有没有办法生成构建器类?

4

1 回答 1

3

在@Builder 文档中查看以下内容:

@Builder(access = AccessLevel.PACKAGE) 从 lombok v1.18.8 开始是合法的(并将生成具有指示访问级别的构建器类、构建器方法等)

如果您在此处查看 Builder 的源代码,您会看到默认情况下 a 的访问级别@Builderlombok.AccessLevel.PUBLIC,但可以使用@Builder(access = AccessLevel.PACKAGE).

另外仅供参考,以下访问级别受支持@BuilderPUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE. 这是通过AccessLevel枚举的源代码here

于 2019-07-15T14:22:04.220 回答