Error PMD: AccessorMethodGeneration al sobrescribir algunos métodos en el generador de Lombok Builder.
Tengo la siguiente clase que debería ser construida con Lombok @Builder
:
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder(toBuilder = true)
public class Foo {
private String myName;
private int myAge;
public static class FooBuilder {
// Estoy sobreescribiendo este método para agregar cierta lógica de validación
public FooBuilder myName(String myName) {
// alguna lógica simple para validar "myName"
this.myName= myName;
return this;
}
}
}
Me gustaría agregar cierta lógica simple para validar el campo myName
antes de establecerlo. Pero no quiero hacer eso por el campo myAge
. Por lo tanto, el constructor del constructor de myAge
y FooBuilder
serán generados por Lombok.
Esto hace que PMD genere un error:
ReglaGeneraciónDelMétodoAccessor Prioridad:3 Evite los métodos generados automáticamente
para acceder a campos y métodos privados de clases internas/externas.
¿Debo suprimir este error o hay una mejor manera de lograr lo que quiero?
davy.ai
Una opción para solucionar el error de PMD sería agregar la anotación
@SuppressWarning
a la claseFoo
y especificar la reglaPMD
que se debe suprimir, así:Sin embargo, un enfoque mejor sería crear una clase de construcción separada para la validación de
myName
y usarla en la anotación@Builder
de la claseFoo
. Aquí hay un ejemplo:En este ejemplo, hemos creado una clase de construcción separada
FooNameBuilder
con un métodomyName
que incluye la lógica de validación. Hemos usado la anotación@Builder
en el constructor privado para especificar el nombre de la clase de construcción comoFooNameBuilder
y proporcionar un nombre de método de construcción comonameBuilder
.Ahora podemos usar este constructor para crear objetos
Foo
mientras validamos el campomyName
.