2.2.5 equals와 hashCode 메서드 만들기
Person 클래스가 데이터를 표현한다면 hashCode와 equals 메서드도 필요하다. 자바에서 이런 메서드를 작성하는 일은 지겹고 실수하기도 쉬운 일이다. 다행히 좋은 자바 IDE는 여러분 대신 이런 메서드를 자동으로 생성해 준다. 다음 예제는 인텔리J IDEA가 제공하는 이런 기능으로 만든 코드다.
예제 2-2 인텔리J IDEA가 생성한 자바 데이터 객체
public final class Person {
private final String name;
private final Instant registered;
public Person(String name, Instant registered) {
this.name = name;
this.registered = registered;
}
public Person(String name) {
this(name, Instant.now());
}
public String getName() {
return name;
}
public Instant getRegistered() {
return registered;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(name, person.name) && Objects.equals(registered, person.registered);
}
@Override
public int hashCode() {
return Objects.hash(name, registered);
}
}