@nolouds

Почему в этом коде используется Override(из туториала Spring)?

Здесь три переопределенных метода equals, hashCode, toString. Почему пишется аннотация к ним, если класс только один, у него нет родительского класса и похожих методов? Насколько я понял из объяснений в интернете "@Override" пишется к методам, которые также есть у родительского класса. И почему пишется "Employee() {}" до создания метода c этим именем?

package payroll;

import java.util.Objects;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
class Employee {

  private @Id @GeneratedValue Long id;
  private String name;
  private String role;

  Employee() {}

  Employee(String name, String role) {

    this.name = name;
    this.role = role;
  }

  public Long getId() {
    return this.id;
  }

  public String getName() {
    return this.name;
  }

  public String getRole() {
    return this.role;
  }

  public void setId(Long id) {
    this.id = id;
  }

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

  public void setRole(String role) {
    this.role = role;
  }

  @Override
  public boolean equals(Object o) {

    if (this == o)
      return true;
    if (!(o instanceof Employee))
      return false;
    Employee employee = (Employee) o;
    return Objects.equals(this.id, employee.id) && Objects.equals(this.name, employee.name)
        && Objects.equals(this.role, employee.role);
  }

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

  @Override
  public String toString() {
    return "Employee{" + "id=" + this.id + ", name='" + this.name + '\'' + ", role='" + this.role + '\'' + '}';
  }
}
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Spring
Седой и строгий
Обожемой, это же основы Java, рано вам ещё в Spring лезть.

Почему пишется аннотация к ним, если класс только один, у него нет родительского класса и похожих методов?

Все классы неявно наследуют Object, в котором и определены интересующие вас методы.

И почему пишется "Employee() {}" до создания метода c этим именем?

Во-первых, это не метод, а конструктор. Во-вторых, у сущностей должен быть конструктор без параметров, иначе ORM не сможет их создавать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы