Ломбокская аннотация @Getter для логического поля

Я использую аннотацию lombok Java @Getter для генерации геттеров для моего POJO. У меня есть "логическое" поле с именем "isAbc". Аннотация @Getter в этом случае генерирует метод с именем isAbc(). Разве он не должен генерировать метод с именем isIsAbc()?

2 ответа

Решение

Прочитайте раздел "мелкий шрифт" на странице lombok https://projectlombok.org/features/GetterSetter.html

Для логических полей, которые начинаются с, за которым сразу следует буква в заглавии, ничего не ставится с префиксом для генерации имени получателя.

Поэтому поведение, которое вы испытываете, соответствует указанному.

Обратите внимание, что поведение отличается для boolean а также Boolean:

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

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

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

Ломбок не имеет префикса is если имя уже начинается с is за которым следует заглавная буква, как в isGood.

Вы можете встретить такие имена, как canDelete что тоже немного разочаровывает, так как получатель будет сгенерирован с именем isCanDelete. Чтобы избежать этого, вы можете использоватьfluent параметр как в:

@Getter(fluent = true)
private boolean canDelete;

или (в зависимости от версии):

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

В этом случае имя останется как есть.

Я делаю некоторые тесты против ломбок (1.16.8), и выводы, как показано ниже.

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 => isGood()               boolean
setter => setGood(boolean good)  void
Другие вопросы по тегам