상황

  • data 클래스에 Array 타입의 프로퍼티가 있을 경우에 IDE에서 equals()hashCode()를 오버라이드 하라는 알림이 나온다.

원인

  • data 클래스는 equals()를 자동 생성할 때, 각 프로퍼티의 equals() 메소드를 호출하여 동등성을 비교한다.
  • 아래 사진은 위의 SomeClass를 자바로 디컴파일 한 코드다.
  • Instrinsics.areEqual() 코드를 살펴보면 두 객체의 equals()를 호출하는 것을 확인할 수 있다.
  • Array 타입은 equals() 메소드가 구현되어 있지 않으므로, 오버라이드 해줘야된다.
  • 만약 List 를 사용할 수 있는 상황이라면 Array 대신 List로 대체하는 방법도 있다.

참고 자료