equals 메서드를 재정의하지 않는 것이 좋은 경우

  1. 각 인스턴스가 본질적으로 고유하다.

  2. 인스턴스의 논리적 동치성을 검사할 일이 없다.

  3. 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는다.

  4. 클래스가 private이거나 package-private이고 equals 메서드를 호출할 일이 없다.

equals 메서드를 재정의하는 경우

객체의 논리적 동치성을 확인해야 하는데 상위 클래스가 equals가 논리적 동치성을 비교하도록 재정의되어있지 않을 때

equals 메서드의 일반 규약

1. 반사성: null이 아닌 모든 참조 값 x에 대해, x.equals(x)는 true다.

2. 대칭성: null이 아닌 모든 참조 값 x,y에 대해 x.equals(y)가 true이면 y.equals(x)도 true다.

3. 추이성: null이 아닌 모든 참조 값 x,y,z에 대해 x.equals(y)가 true이고, y.equals(z)도 true이면 x.equals(z)도 true이다.