HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🛁
공부기록
/
📚
책 정리
/
🏀
item10 - equals는 일반 규약을 지켜 재정의하라
🏀

item10 - equals는 일반 규약을 지켜 재정의하라

속성
3장

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

equals를 재정의 하지 않는 것이 최선이다.

필요가 없을때

인스턴스 자체가 그 자체만으로 고유할때는 필요가 없다. enum도 본질적으로 그 자체만으로 고유하기 때문에 필요 없다.

다음의 경우에 해당한다면 equals 를 재정의 할 필요가 없다.

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

인스턴스의 ’논리적 동치성’을 검사할 필요가 없다.

상위 클래스에서 재정의한 equals가 하위 클래스에도 적절하다.

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

equals는 일반 규약을 지켜 재정의하라 [equals의 규약]

반사성

  • A.equals(A) == true

대칭성

  • A.equals(B) == B.equals(A)
    • CaseInsensitiveString

추이성

  • A.equals(B) && B.equals(C), A.equals(C)
    • Point, ColorPoint(inherit), CounterPointer, ColorPoint(comp)

일관성

  • A.equals(B) == A.equals(B)

null-아님

  • A.equals(null) == false

Value 기반의 클래스

  • 식별자가 없고 불변이다.
  • 식별자가 아니라 인스턴스가 가지고 있는 상태를 기반으로 eqauls, hashCode, toString을 구현한다.
  • == 오퍼레이션이 아니라 equals를 사용해서 동등성을 비교한다.
  • 동일한(equals) 객체는 상호교환 가능하다.