Last updated
Last updated
Проектът Lombok е базирана на анотации Java библиотека, която ви позволява да намалите шаблонния код. Lombok предлага различни анотации, насочени към замяна на Java код, който е шаблонен, повтарящ се или досаден за писане. Като използвате Lombok можете да избегнете писането на конструктори без аргументи, toString()
, equals()
и hashCode()
методи като добавите няколко анотации. По време на компилиране библиотеката инжектира байт кода, представляващ желания шаблонен код в .class файловете.
Добавяне на библиотеката:
За изключване на Lombok от крайния jar файл:
Когато дадено поле е анотирано с @Getter
и/или @Setter
, Lombok автоматично генерира съответно гетър и/или сетър по подразбиране. Генерираният метод по подразбиране ще бъде public, освен ако не е зададен AccessLevel
. Възможните опции за последния са PUBLIC, PROTECTED, PACKAGE и PRIVATE
.
С анотациите @Getter
и @Setter
можете да коментирате и целия клас. В този случай логиката ще бъде приложена към всяко поле на класа. Можете ръчно да деактивирате генерирането на getter/setter за дадено поле, като използвате опцията AccessLevel.NONE
.
Когато даден клас е анотиран с @NoArgsConstructor
, Lombok автоматично генерира конструктор без параметри. По същия начин, когато се анотира с @AllArgsConstructor
, ще се генерира конструктор с параметри за всяко поле на класа.
@RequiredArgsConstructor
води до конструктор с параметър за всяко поле, което изисква специална обработка - неинициализирани final полета, както и всички полета, маркирани като @NonNull
,но неинициализирани на мястото на тяхната декларация.
Статичните полета ще бъдат игнорирани от тези анотации.
Ако даден клас е анотиран с @ToString
, Lombok ще се погрижи за генерирането на метода. По подразбиране ще бъде върнат низ, съдържащ името на класа, последвано от стойностите на всяко поле, разделени със запетая. Ако зададете стойност на параметъра includeFieldNames
true, името на всяко поле ще бъде поставено преди неговата стойност. По подразбиране всички нестатични полета ще бъдат взети предвид при генерирането на метода. Анотирайте поле с @ToString.Exclude
, ако искате Lombok да го игнорира.
Анотирайте клас с @EqualsAndHashCode
и Lombok автоматично ще създаде методите. По подразбиране всички нестатични, нетранзитивни полета ще бъдат взети под внимание. Можете да промените кои полета да се използват, като ги анотирате с @EqualsAndHashCode.Include
или @EqualsAndHashCode.Exclude
. Като алтернатива можете да анотирате своя клас с @EqualsAndHashCode(onlyExplicitlyIncluded=true)
и след това да посочите точно кои полета или методи искате да се използват, като ги анотирате с @EqualsAndHashCode.Include
.
Можете да анотирате със @NonNull
поле, параметър на метод или цял конструктор. По този начин Lombok ще генерира null проверки за съответния компонент.
Без библиотеката Lombok кодът би имал следния вид:
@Data
е анотация, която събира в едно цяло анотациите , , , и . По този начин генерира всички шаблони, необходими за POJO клас. А именно: гетъри за всички полета, сетъри за всички non-final полета, имплементации на toString
, equals
и hashCode
, включващи всички полета от класа и конструктор за всички полета, изискващи специална обработка.