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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Аннотации для управления состоянием

Комбинированная аннотация
@Data и нюансы использования

Аннотация @Data

Эта аннотация объединяет функциональность нескольких аннотаций:
@Getter и @Setter для всех полей.
@ToString для генерации метода toString().
@EqualsAndHashCode для генерации методов equals() и hashCode().
@RequiredArgsConstructor для генерации конструктора с обязательными полями.

Пример использования:
import lombok.Data;

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


Как это работает:


Lombok генерирует следующие методы и конструктор:
Геттеры и сеттеры для всех полей.
Метод toString().
Методы equals() и hashCode().
Конструктор для обязательных полей (если такие есть).


Пример сгенерированного кода:
public class User {
private String name;
private int age;

public User() {}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "User(name=" + this.name + ", age=" + this.age + ")";
}

@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);
}
}


Нюансы:
Если в классе есть final-поля или поля с @NonNull, Lombok добавит конструктор для этих полей.
Аннотация
@Data не генерирует конструктор по умолчанию (@NoArgsConstructor), если в классе есть final-поля.
Можно комбинировать
@Data с другими аннотациями, например, @Builder, чтобы добавить дополнительные возможности.

#Java #Training #Spring #Lombok #Data