Java for Beginner
675 subscribers
549 photos
155 videos
12 files
841 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Создание кастомных аннотаций с использованием Lombok

Lombok позволяет создавать кастомные аннотации, которые объединяют несколько аннотаций Lombok в одну. Это полезно, если вы часто используете одни и те же комбинации аннотаций.

Пример создания кастомной аннотации

Шаг 1: Создайте аннотацию:
import lombok.Value;
import lombok.With;
import lombok.experimental.Accessors;

@Value
@With
@Accessors(fluent = true)
public @interface ImmutableUser {
}


Шаг 2: Используйте аннотацию:
@ImmutableUser
public class User {
String name;
int age;
}


Результат:
Класс User будет иметь все функциональности
@Value, @With и @Accessors(fluent = true).

Как это работает под капотом

Компиляция Java-кода:
Когда вы компилируете код, Lombok анализирует кастомную аннотацию и применяет все аннотации, которые она объединяет.

Генерация кода:
Lombok генерирует код для каждой аннотации, указанной в кастомной аннотации.
Например, для @ImmutableUser будет сгенерирован код для @Value, @With и @Accessors(fluent = true).

Нюансы использования кастомных аннотаций

Ограничения:
Кастомные аннотации могут объединять только аннотации Lombok.
Нельзя использовать кастомные аннотации для добавления новой функциональности, только для комбинирования существующей.

Взаимодействие с другими аннотациями:
Кастомные аннотации можно комбинировать с другими аннотациями Lombok.
Например, можно добавить
@Builder к кастомной аннотации:

@Value
@With
@Builder
public @interface ImmutableUserWithBuilder {
}


Проблемы:

Если кастомная аннотация объединяет конфликтующие аннотации (например, @Value и @Data), это вызовет ошибку компиляции.
Убедитесь, что все аннотации в кастомной аннотации совместимы друг с другом.


#Java #Training #Spring #Lombok #CustomAnnotation