재정의하지 말아야 할 경우
// 호출 방지법
@Override public boolean equals(Object o){
throw new new AssertionError();
}
equals 재정의해야 할 경우
equals 메서드 재정의 일반 규약
양질의 메서드 구현 방법
Google @AutoValue을 사용하면 편리하다
private final short areaCode, prefix, lineNum;
@Override public int hashCode() {
int result = Short.hashCode(areaCode);
// 숫자 31: 홀수이면서 소수. 짝수일 시 오버플로우 발생한 경우 정보 손실
result = 31 * result + Short.hashCode(prefix);
result = 31 * result + Short.hashCode(lineNum);
return result;
// 한 줄짜리 hashCode 메서드
// 입력 인수를 위한 배열이 필요하고, 기본 타입이 있다면 박싱, 언박싱의 절차가 필요하므로
// 속도가 느리다.
@Override public int hashCode() {
return Objects.hash(lineNum, prefix, areaCode);
}
}