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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Lombok, базовые аннотации

Аннотация @EqualsAndHashCode

Эта аннотация автоматически генерирует методы equals() и hashCode(), которые используются для сравнения объектов.

Пример:
import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class User {
private String name;
private int age;
}


Как это работает:
Lombok генерирует методы equals() и hashCode(), которые сравнивают объекты по их полям. Например:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age && Objects.equals(name, user.name);
}

@Override
public int hashCode() {
return Objects.hash(name, age);
}


Нюансы:

Можно исключить поля из сравнения с помощью параметра exclude:

@EqualsAndHashCode(exclude = "age")
public class User {
private String name;
private int age;
}


Можно включить только определенные поля с помощью параметра of:
@EqualsAndHashCode(of = "name")
public class User {
private String name;
private int age;
}


Как Lombok работает под капотом?


Lombok использует механизм обработки аннотаций (Annotation Processing) на этапе компиляции. Вот как это работает:

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

Генерация кода:
Lombok анализирует аннотации в вашем коде.
На основе аннотаций Lombok генерирует дополнительные методы (например, геттеры, сеттеры, toString()).

Добавление в байт-код:
Сгенерированные методы добавляются в байт-код (.class файлы), но не отображаются в исходном коде.

Пример байт-кода:
Если вы используете @Getter, Lombok добавит методы getName() и getAge() в байт-код, но в исходном коде их не будет.

Нюансы использования Lombok

Зависимость от Lombok:
Все разработчики проекта должны использовать Lombok, иначе код не скомпилируется.
Убедитесь, что Lombok настроен в вашей IDE.

Совместимость с другими библиотеками:
Lombok может конфликтовать с некоторыми библиотеками, например, с Jackson или Hibernate. В таких случаях нужно быть осторожным с аннотациями.

Отладка:
Поскольку сгенерированный код не отображается в исходниках, отладка может быть сложнее. Убедитесь, что ваша IDE поддерживает Lombok.

Кастомизация:
Lombok предоставляет множество параметров для настройки аннотаций, таких как уровень доступа, исключение полей и т.д.

#Java #Training #Spring #Lombok #EqualsAndHashCode