2011-11-03 24 views
80

Quiero usar una clase de datos en Lombok. Como tiene aproximadamente una docena de campos, lo anoté con @Data para generar todos los setters y getter. Sin embargo, hay un campo especial para el cual no quiero que se implementen los accessors.Omitir un Setter/Getter en Lombok

¿Cómo omite Lombok este campo?

Respuesta

162

Puede pasar un nivel de acceso a las anotaciones @Getter y @Setter. Esto es útil para hacer getters o setters protegidos o privados. También se puede usar para anular el valor predeterminado.

Con @Data, tiene acceso público a los accesadores por defecto. Ahora puede utilizar el nivel de acceso especial NONE omitir por completo el descriptor de acceso, así:

@Getter(AccessLevel.NONE) 
@Setter(AccessLevel.NONE) 
private int mySecret; 
+0

Perfecto. Si el campo privado es un POJO y también tiene anotaciones con @Delegate(), podría usarse para extraer un conjunto de propiedades en una clase reutilizable separada. Esto puede ser útil para tener el mismo conjunto de propiedades aplicadas a múltiples clases (tipo de mixin para agregar propiedades). Por ejemplo, una mezcla que representa un conjunto de atributos que pueden aplicarse al modelado de varios elementos XML. – xorcus

20

Según @Data description que puede utilizar:

Todos los captadores y definidores generados serán públicas. Para anular el nivel de acceso , anote el campo o la clase con una @Setter explícita y/o una anotación @Getter. También puede usar esta anotación (por combinándola con AccessLevel.NONE) para suprimir la generación de un getter y/o setter en conjunto.

Cuestiones relacionadas