Lombok @Value — лёгкое создание неизменяемых классов

Цикл статей «Project Lombok».

Следующая статья — «Lombok @Builder».
Предыдущая статья — «Lombok @Data».

Аннотация @Value впервые появилась в качестве экспериментальной возможности в Lombok v0.11.4.

@Value больше не предполагает @Wither с lombok v0.11.8.

@Value продвинулась в основной пакет Lombok с Lombok v0.12.0.

@Value — это неизменяемый вариант @Data. Читать далее Lombok @Value — лёгкое создание неизменяемых классов

Lombok @Data

Цикл статей «Project Lombok».

Следующая статья — «Lombok @Value — лёгкое создание неизменяемых классов».
Предыдущая статья — «Lombok @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor».

@Data — это удобная сокращённая аннотация, которая содержит в себе возможности из @ToString, @EqualsAndHashCode, @Getter / @Setter и @RequiredArgsConstructor. Другими словами, @Data генерирует весь бойлерплейт код, который обычно связан с обычными POJO Читать далее Lombok @Data

Lombok @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

Цикл статей «Project Lombok».

Следующая статья — «Lombok @Data».
Предыдущая статья — «Lombok @EqualsAndHashCode — облегчаем сравнение объектов».

Эти три аннотации генерируют конструктор, который принимает 1 параметр для определённых полей и просто присваивает этот параметр полю.

@NoArgsConstructor генерирует конструктор без параметров. Если это невозможно (потому что поля final), то возникает ошибка компиляции. Если используется @NoArgsConstructor(force = true), то все final поля инициализируются 0 / false / null. Для полей с ограничениями, например @NotNull, никаких проверок при присвоении не генерируется, поэтому эти условия могут не выполняться, пока эти поля не будут инициализированы подобающим образом позже. Читать далее Lombok @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

Lombok @EqualsAndHashCode — облегчаем сравнение объектов

Цикл статей «Project Lombok».

Следующая статья — «Lombok @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor».
Предыдущая статья — «Lombok @ToString».

К любому объявлению класса может быть применена аннотация @EqualsAndHashCode, чтобы lombok сгенерировал методы equals(Object other) и hashCode(). По умолчанию используются все нестатические, не-transient поля, но вы можете исключить некоторые поля, перечислив их в параметре exclude. Или вы можете явно указать, какие поля вы хотите использовать, перечислив их в параметре of. Читать далее Lombok @EqualsAndHashCode — облегчаем сравнение объектов

Lombok @ToString

Цикл статей «Project Lombok».

Следующая статья — «Lombok @EqualsAndHashCode — облегчаем сравнение объектов».
Предыдущая статья — «Lombok @Getter и @Setter — больше не нужно писать геттеры и сеттеры».

К любому объявлению класса можно добавить аннотацию @ToString, чтобы lombok генерировал реализацию метода toString(). По умолчанию он возвращает имя класса и значения всех полей, разделённые запятыми.

Устанавливая параметр includeFieldNames в true, вы можете сделать вывод полей более понятным (но увеличить длину).

По умолчанию все нестатические поля выводятся. Если вы хотите пропустить некоторые поля, то вы можете перечислить их в параметре exclude. Или вы можете указать только поля, которые нужно выводить в параметре of. Читать далее Lombok @ToString

Lombok @Getter и @Setter — больше не нужно писать геттеры и сеттеры

Цикл статей «Project Lombok».

Следующая статья — «Lombok @ToString».
Предыдущая статья — «Lombok @Cleanup — автоматическое управление ресурами».

Вы можете добавить аннотацию @Getter и/или @Setter к любому полю, чтобы lombok автоматически сгенерировал методы получения и установки значения.
Метод получения значения по умолчанию просто возвращает значение поля и имеет имя getFoo, если поле имеет имя foo (или isFoo, если поле логического типа). Метод установки нового значения по умолчанию имеет имя setFoo, если поле имеет имя foo, возвращает void, и имеет один параметр с тем же типом, что и само поле. Этот метод просто устанавливает значение в поле. Читать далее Lombok @Getter и @Setter — больше не нужно писать геттеры и сеттеры

Lombok @Cleanup — автоматическое управление ресурами

Цикл статей «Project Lombok».

Следующая статья — «Lombok @Getter и @Setter — больше не нужно писать геттеры и сеттеры».
Предыдущая статья — «Lombok @NonNull, или как я перестал беспокоиться и полюбил NullPointerException».

Вы можете использовать @Cleanup, для того чтобы гарантировать, что данный выделенный ресурс автоматически очистит за собой, до того как он выйдет за пределы области видимости. Вы делаете это указывая аннотацию  @Cleanup для любой локальной переменной вот так:
@Cleanup InputStream in = new FileInputStream("some/file"); . В результате в конце области видимости будет вызываться in.close(). Этот вызов гарантирует использование конструкции try/finally. Смотрите пример ниже, чтобы увидеть, как это работает. Читать далее Lombok @Cleanup — автоматическое управление ресурами

Lombok @NonNull, или как я перестал беспокоиться и полюбил NullPointerException

Цикл статей «Project Lombok».

Следующая статья — «Lombok @Cleanup — автоматическое управление ресурами».
Предыдущая статья — «Lombok val — беспроблемные final локальные переменные».

Новое в Lombok 0.11.10: Вы можете использовать @NonNull для параметра в методе или конструкторе, чтобы lombok сгенерировал проверку на null.

Lombok всегда расценивает любую аннотацию с именем @NonNull на поле как сигнал сгенерировать проверку на null, если lombok генерирует весь метод или конструктор (например, для @Data). Однако теперь при использовании @lombok.NonNull для параметра приведёт к вставке проверки на null внутрь  вашего метода или конструктора. Читать далее Lombok @NonNull, или как я перестал беспокоиться и полюбил NullPointerException

Lombok val — беспроблемные final локальные переменные

Цикл статей «Project Lombok».

Следующая статья — «Lombok @NonNull, или как я перестал беспокоиться и полюбил NullPointerException».
Предыдущая статья — «».

Добавлено в версии 0.10. Вы можете использовать val в качестве типа при объявлении локальной переменной вместо указания реального типа. При этом тип будет выводиться из выражения инициализации. Локальная переменная будет сделана неизменяемой (final). Эта возможность работает в локальных переменных и для циклов foreach, но не для полей. Обязательно требуется наличие выражения инициализации. Читать далее Lombok val — беспроблемные final локальные переменные

«Остров сокровищ» Р. Л. Стивенсона 37

I walked through a matted passage. There was a man. He was very broad with roughened, lined hands and thick eyebrows. The man looked at me with a stately and condescending look. He wore a powdered wig. I regard that man as a criminal.

Я прошёл по проходу, устланному половицами. Там был мужчина. Читать далее «Остров сокровищ» Р. Л. Стивенсона 37