Използване на @Getter на Lombok за Boolean Fields

1. Въведение

Project Lombok е популярна библиотека за редуциране на Java шаблон.

В този бърз урок ще разгледаме как анотацията @Getter на Lombok работи в логически полета, за да премахне необходимостта от създаване на съответните й getter методи.

2. Зависимост на Maven

Нека започнем с добавяне на Project Lombok към нашия pom.xml :

 org.projectlombok lombok 1.18.10 

3. С помощта @Getter на булев поле

Да кажем, че искаме Lombok да генерира метод за достъп за нашето частно булево поле.

Можем да анотираме това поле с @Getter :

@Getter private boolean running;

И Lombok ще използва своя процесор за анотиране, за да генерира метод isRunning () в класа.

И сега можем да се позовем на него, въпреки че сами не сме написали метода:

@Test public void whenBasicBooleanField_thenMethodNamePrefixedWithIsFollowedByFieldName() { LombokExamples lombokExamples = new LombokExamples(); assertFalse(lombokExamples.isRunning()); }

3.1. А Булева Невярно със същото име като му Accessor

Нека добавим още един ред код, за да направим примера малко труден:

@Getter private boolean isRunning = true;

Би било малко тромаво, ако Lombok създаде метод, наречен isIsRunning .

Вместо това Lombok създава 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;

Има много причини, поради които трябва да избягваме объркваща конвенция за именуване като тази. Един от тях е, че създава конфликт за Ломбок.

Използвайки конвенцията на Lombok, тези две полета ще имат едно и също име на метода за достъп: isRunning . Но наличието на два метода с едно и също име в един и същи клас ще създаде грешка в компилатора.

Lombok решава това, като създава само един метод за достъп и в този случай го насочва към работещ, въз основа на реда за деклариране на полето:

@Test public void whenTwoBooleanFieldsCauseNamingConflict_thenLombokMapsToFirstDeclaredField() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.isRunning() == lombokExamples.running); assertFalse(lombokExamples.isRunning() == lombokExamples.isRunning); }

4. Използване на @Getter в логическо поле

Сега Lombok третира булевия тип малко по-различно.

Нека опитаме нашия същи пример за последен път, но с Boolean вместо примитивния тип:

@Getter private Boolean running;

Вместо да създава isRunning , Lombok ще генерира getRunning :

@Test public void whenFieldOfBooleanType_thenLombokPrefixesMethodWithGetInsteadOfIs() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.getRunning()); }

5. Заключение

В тази статия разгледахме как да използваме анотацията @Getter на Lombok за булеви примитиви и булеви обекти.

И не забравяйте да проверите пробите на Github.