Lombok annotation @Getter for boolean field

I do some tests against the lombok(1.16.8), and the conclusions are as below.

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

Lombok does not prefix with is if the name already starts with is followed by an uppercase letter as in isGood.

You might encounter names like canDelete which will generate a getter with the name isCanDelete. To avoid this you can use the fluent parameter:

@Getter(fluent = true)
private boolean canDelete;

or (depending on version):

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

In which case it will leave the name as it is so the getter becomes canDelete().


Read the 'small print' section on the lombok page https://projectlombok.org/features/GetterSetter.html

For boolean fields that start with is immediately followed by a title-case letter, nothing is prefixed to generate the getter name.

So the behavior you experience is as specified.

Note that the behavior is different for boolean and Boolean:

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

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

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

Tags:

Java

Lombok