Me gustaría generar package-scope
constructor usando Lombok , pero no estoy seguro si es posible (no he encontrado ninguna pista en la documentación ).
Por defecto Lombok genera public
constructor, es decir, este código:
@Builder
class User {
private final String name;
}
Se traduce en lo siguiente:
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 + ")";
}
}
}
¿Hay alguna manera de generar la clase constructor sin que esto conduzca public
palabra clave?
Echa un vistazo a la continuación en la documentación @Builder :
@Builder (acceso = AccessLevel.PACKAGE) es legal (y generará la clase constructor, el método constructor, etc con el nivel de acceso indicada) partiendo de v1.18.8 lombok
Y si ves el código fuente del constructor aquí , verá que, por defecto, el nivel de acceso de un @Builder
sería lombok.AccessLevel.PUBLIC
, pero se pueden hacer paquete-privada con @Builder(access = AccessLevel.PACKAGE)
.
También FYI, los siguientes niveles de acceso son compatibles con @Builder
: PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE
. Esto se realiza a través del AccessLevel
código fuente de enumeración aquí .