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