Ломбокская аннотация @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