Lombok @getter і @setter

Ви можете додати анотацію @Getter і / або @Setter до будь-якого полю, щоб lombok автоматично згенерував методи отримання і установки значення.
Метод отримання значення за замовчуванням просто повертає значення поля і має ім'я getFoo, якщо поле має ім'я foo (або isFoo, якщо поле логічного типу). Метод установки нового значення за замовчуванням має ім'я setFoo, якщо поле має ім'я foo, повертає void, і має один параметр з тим же типом, що і саме поле. Цей метод просто встановлює значення в полі.

Згенеровані методи отримання / установки значення мають модифікатор доступу public, якщо ви не вкажете явно AccessLevel, як показано в прикладі нижче. Доступні рівні доступу: PUBLIC, PROTECTED, PACKAGE і PRIVATE.

Ви також можете вказати анотацію @Getter і / або @Setter для класу. У цьому випадку це буде так само, як ніби ви вказали ці анотації для всіх нестатичних полів класу.

Ви можете також вручну заборонити генерацію методу отримання / установки для будь-якого поля за допомогою AccessLevel.NONE. Це дозволяє вам перевизначити поведінку анотацій @Getter, @Setter або @Data для класу.

Щоб додати анотації до згенеровані методу, використовуйте onMethod = @__ ( <@AnnotationsHere> );. Щоб додати анотації тільки до параметру згенерованого методу установки значення, використовуйте onParam = @__ ( <@AnnotationsHere> ). Але будьте обережні! Це експериментальна можливість.

НОВЕ в v1.12.0: javadoc у поля тепер копіюється на згенеровані методи отримання і установки значень. Зазвичай весь текст копіюється, @return переміщається в метод отримання значення, а рядки @param переміщаються в метод установки значення. Переміщаються означає, що видаляються з JavaDoc поля. Також можливо визначити унікальний текст для методу отримання значення і методу установки значення. Для цього створіть секцію GETTER і / або SETTER. Секція - це лінія в javadoc, що містить два або більше мінуса (дефіса), потім текст «GETTER» або «SETTER», потім два або більше мінуса (дефіса) і більше нічого в лініі.Еслі ви використовуєте секції, то @return і @ param більше не розділяються (перемістіть @return або @param всередину секції).

За допомогою Lombok

Lombok буде позначати будь-яке використання @Getter як попередження або помилку, якщо налаштоване.

Для генерації імен методів перший символ поля, якщо він в нижньому регістрі, наводиться до верхнього регістру, в іншому випадку він залишається незмінним. Потім використовуються префікси get / set / is.

Ніякої метод не генерується, якщо вже існує метод з таким же ім'ям (не залежить від регістра) і тим же кількістю параметрів. Наприклад, метод getFoo () не генеруватися, якщо вже існує метод getFoo (String ... x), навіть якщо технічно можливо зробити такий метод. Це застереження, для того щоб запобігти непорозумінням. Якщо генерація методу пропущена з цієї причини, то з'являється попередження. Ви можете помітити будь-який метод @ lombok.experimental.Tolerate, щоб приховати їх.

Для логічних полів, що починаються з is з подальшим символів у верхньому регістрі, префікс не використовується для генерації імені методу отримання значення.

Будь-які варіації логічного типу не матимуть префікс is замість get. Наприклад, повертається тип java.lang.Boolean матиме префікс get, а не is.

Будь-які інструкції з ім'ям @NonNull (не залежить від регістра) для поля інтерпретуються як то, що поле ніколи не може містити null. З цієї причини ці анотації додають явну перевірку на null в згенерованих методах установки значення. Також ці інструкції (як і будь-які інструкції з ім'ям @Nullable або @CheckForNull) копіюються до параметру методу установки значення і до методу отримання значення.

Ви можете додати анотацію @Getter або @Setter до класу. Це еквівалентно додаванню цих анотацій до всіх нестатичних полів класу. Анотації @ Getter / @ Setter для полів мають пріоритет над анотаціями для класів.

Використання AccessLevel.NONE просто нічого не генерує. Воно корисно тільки в комбінації з @Data для класу або для встановлених для класу анотацій @Getter або @Setter.

@Getter може також використовуватися в перерахування. @Setter - не може, але не з технічних причин. Методи встановлення значень для перерахувань - це дуже екстремальна і погана ідея.

Ще записи з цієї рубрики: