Omitir un Setter/Getter en Lombok

2 minutos de lectura

avatar de usuario
DerMike

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

¿Cómo omite Lombok este campo?

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

Con @Data, tiene acceso público a los accesores de forma predeterminada. Ya puedes usar el nivel de acceso especial NONE para omitir completamente el descriptor de acceso, así:

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

  • Perfecto. Si el campo privado es un POJO y también está anotado con @Delegate(), podría usarse para extraer un conjunto de propiedades en una clase reutilizable separada. Esto puede ser útil para aplicar el mismo conjunto de propiedades a varias clases (una especie de combinación para agregar propiedades). Por ejemplo, un mixin que representa un conjunto de atributos que pueden aplicarse al modelado de varios elementos XML.

    – xorcus

    30 de enero de 2018 a las 13:08

  • ¿Tiene algo similar a omitir un campo en el generador?

    – zt1983811

    4 mayo 2018 a las 13:40

  • ¿Quiere decir que el atributo no debería aparecer en el generador? No, no hay nada directamente para esto. Recuerda sin embargo que @Builder se puede colocar en funciones y constructores, así como en clases, y solo ofrece la configuración de aquellos atributos que aparecen en la firma de esa función.

    – Michael Piefel

    6 mayo 2018 a las 18:19

  • No implementa ningún setter y getter para esta propiedad donde @Data incluye setters y getters de forma predeterminada. que se excluiría al mencionar AccessLevel.NONE.

    – RAM

    27 de febrero de 2019 a las 6:23


De acuerdo a @Descripción de datos puedes usar:

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

avatar de usuario
Sathiamoorthy

Use el siguiente código para omitir/excluye desde la creación de setter y getter. valor la llave debe usarse dentro @Getter y @Setter.

@Getter(value = AccessLevel.NONE)
@Setter(value = AccessLevel.NONE)
private String mySecret;

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad