Anotación Lombok @Getter para campo booleano

2 minutos de lectura

Avatar de usuario de Nitesh Kumar
nitesh kumar

Estoy usando la anotación Java lombok @Getter para generar getters para mi POJO. tengo un boolean campo por el nombre isAbc.

El @Getter anotación en este caso genera un método por el nombre isAbc(). ¿No debería generar un método por el nombre isIsAbc()?

Avatar de usuario de Harald Gliebe
Harald Gliebe

Lea la sección de ‘letra pequeña’ en la página de lombok https://projectlombok.org/features/GetterSetter.html

Para los campos booleanos que comienzan con es seguido inmediatamente por una letra de título, no se antepone nada para generar el nombre del captador.

Entonces, el comportamiento que experimenta es el especificado.

Tenga en cuenta que el comportamiento es diferente para boolean y Boolean:

@Getter
private boolean isGood; // => isGood()

@Getter
private boolean good; // => isGood()

@Getter
private Boolean isGood; // => getIsGood()

  • @serghey-bishyr, debe escribir su propia respuesta y no ampliar la existente.

    – dieter

    6 de marzo de 2017 a las 9:49

  • @dit mi respuesta no será diferente de la existente, solo con algunas notas adicionales.

    – Sergio Bishyr

    6 de marzo de 2017 a las 9:52

  • que pasa con los setters en estos casos

    – whisky

    4 de enero de 2018 a las 10:39

  • @whishky Para los setters, se ignora el prefijo “es”. Esto significa que el valor booleano privado es Bueno; // => establecerBueno()

    – comintor

    11 de enero de 2018 a las 17:20


  • @SergiiBishyr Gracias por mejorar la respuesta. Ese fue definitivamente el enfoque correcto.

    –Dominic Cronin

    9 oct 2020 a las 15:42

Avatar de usuario de Kent Munthe Caspersen
Kent Munthe Caspersen

Lombok no tiene prefijo con is si el nombre ya empieza por is seguido de una letra mayúscula como en isGood.

Puede encontrar nombres como canDelete que generará un getter con el nombre isCanDelete. Para evitar esto puedes usar el fluent parámetro:

@Getter(fluent = true)
private boolean canDelete;

o (dependiendo de la versión):

@Getter
@Accessors(fluent = true)
private boolean canDelete;

En cuyo caso, dejará el nombre tal como está para que el getter se convierta en canDelete().

Avatar de usuario de Sunny
Soleado

Hago algunas pruebas contra el lombok (1.16.8), y las conclusiones son las siguientes.

private Boolean good;

getter => getGood()              Boolean
setter => setGood(Boolean good)  void 


private boolean good;

getter => isGood()               boolean
setter => setGood(boolean good)  void 


private Boolean isGood;

getter => getIsGood()            Boolean
setter => setIsGood()            void 


private boolean isGood;

getter => isGood()               boolean
setter => setGood(boolean good)  void

  • Cómo obligar a Lombok a generar isGood for getter en tipos no primitivos como Boolean isGood ?

    – Andrés

    2 de febrero a las 10:27

¿Ha sido útil esta solución?