이펙티브 자바 아이템 111 [Effective Java] 아이템11 equals를 재정의하려거든 hashCode도 재정의하라 ■ Object 명세 규약 equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메서드는 몇번을 호출해도 일관되게 항상 같은 값을 반환해야 한다. equals(Object)가 두 객체를 같다고 판단했으면, 두 객체의 hashCode는 똑같은 값을 반환해야한다. equals(Object)가 두 객체를 다르다고 판단했더라도, 두 객체의 hashCode가 서로 다른 값을 반환할 필요는 없다. 단, 다른 객체에 대해서는 다른 값을 반환해야 해시 테이블의 성능이 좋아진다. hashCode 재정의를 하지 않았을 경우 문제가 되는 조합은 두번째 조항이다. 즉, 논리적으로 같은 객체는 같은 해시 코드를 반환해야한다. 아래와 같이 PhoneNumber 클래스가 있.. 2021. 1. 24. 이전 1 다음