Задать вопрос
@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 + '\'' + '}';
  }
}
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Spring
Седой и строгий
Обожемой, это же основы Java, рано вам ещё в Spring лезть.

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

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

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

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

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

Похожие вопросы