Object는 객체를 만들 수 있는 구체 클래스이지만 기본적으로 상속해서 사용하도록 설계되어 있다. Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의(overriding)을 염두에 두고 설계된 것이라 재정의 시 지켜야할 일반 규약이 명확히 정의되어 있다.

Item10. equals는 일반 규약을 지켜 재정의하라

equals를 재정의 하지 않는 것이 최선이다. 아래의 경우에 해당한다면 equals를 재정의 할 필요가 없다.

ex 2) 동치성을 검사할 필요가 없는 경우 문자열 “Hello” == “Hello”

equals를 재정의 해야 한다면 반드시 Object 명세에 적힌 일반 규약을 따라야 한다.

equals 구현 방법