Рубрики
Без рубрики

Использование Lombok @Getter для логических полей

Узнайте об удобстве, которое добавляет аннотация Lombok @Getter, а также о некоторых ее нюансах с логическими типами

Автор оригинала: baeldung.

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 .