1. введение
Project Lombok-это популярная библиотека для сокращения шаблонов Java.
В этом кратком руководстве мы рассмотрим, как Lombok @Getter аннотации работают с логическими полями, чтобы устранить необходимость создания соответствующих методов getter.
2. Зависимость Maven
Давайте начнем с добавления Project Lombok в ваш pom.xml :
org.projectlombok lombok 1.18.10
3. Использование @Getter в логическом поле
Допустим, мы хотим, чтобы Ломбок сгенерировал метод доступа для нашего частного логического поля.
Мы можем аннотировать это поле с помощью @Getter :
@Getter private boolean running;
И Lombok будет использовать свой процессор аннотаций для создания метода isRunning() в классе.
И теперь мы можем ссылаться на него, даже если мы сами не написали метод:
@Test public void whenBasicBooleanField_thenMethodNamePrefixedWithIsFollowedByFieldName() { LombokExamples lombokExamples = new LombokExamples(); assertFalse(lombokExamples.isRunning()); }
3.1. Логическое поле, Имеющее То Же Имя, что и Его Принадлежности
Давайте добавим еще одну строку кода, чтобы сделать пример немного сложнее:
@Getter private boolean isRunning = true;
Было бы немного громоздко, если бы Ломбок создал метод с именем is Is Running .
Вместо этого Ломбок создает isRunning , как и раньше:
@Test public void whenBooleanFieldPrefixedWithIs_thenMethodNameIsSameAsFieldName() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.isRunning()); }
3.2. Два логических Поля С Одинаковым Именем доступа
Иногда могут возникать конфликты.
Предположим, что нам нужно иметь следующие строки в одном классе:
@Getter public boolean running = true; @Getter public boolean isRunning = false;
Есть много причин, по которым мы должны избегать такого запутанного соглашения об именах, как это. Одна из них заключается в том, что это создает конфликт для Ломбока.
Используя соглашение Ломбока, эти два поля будут иметь одно и то же имя метода доступа: isRunning . Но наличие двух методов с одинаковым именем в одном классе приведет к ошибке компилятора.
Ломбок решает эту проблему, создавая только один метод доступа и, в данном случае, указывая его на running, на основе порядка объявления полей:
@Test public void whenTwoBooleanFieldsCauseNamingConflict_thenLombokMapsToFirstDeclaredField() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.isRunning() == lombokExamples.running); assertFalse(lombokExamples.isRunning() == lombokExamples.isRunning); }
4. Использование @Getter в логическом поле
Теперь Ломбок трактует тип Boolean немного по-другому.
Давайте в последний раз попробуем тот же пример, но с Boolean вместо примитивного типа:
@Getter private Boolean running;
Вместо создания isRunning , Lombok создаст getRunning :
@Test public void whenFieldOfBooleanType_thenLombokPrefixesMethodWithGetInsteadOfIs() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.getRunning()); }
5. Заключение
В этой статье мы рассмотрели, как использовать аннотацию Lombok @Getter для логических примитивов и логических объектов.
И обязательно проверьте образцы на Github .