Skip to content

배토의 개발일지

나를위한 단편적 기억들의 기록

Menu
  • 안드로이드
  • 코틀린
  • Godot
  • 블렌더
  • git
  • 게임제작일지
  • 기타
Menu

Kotlin: data class equals without id

Posted on 2020년 12월 18일 by batmask

DB를 사용하면서 Entity를 data class로 표현하는데, id를 자동생성되도록 했더니 두개의 entity 비교에 문제가 생겼다. 내가 원하는건, id를 제외한 내용의 비교. data class가 자동 생성해주는 equals()를 포기하고 내가 재정의 하기엔, 너무 말이 안되는거 같아서 한참을 헤매이다가 알아냄.

data class가 자동생성해주는 equals()는 primary constructor에 정의된 properties만 사용한다.

data class Person(val name: String) {
     var age: Int = 0
 }

위와 같이 정의되면, age에 상관없이 name만 비교가 된다.

알고보니, Kotlin 공식 문서에 나와있는 내용. 이걸 왜 그리 헤매였던가. 주의할 점은, toString(), hashCode(), copy()에서도 body에 정의된건 다루지 않는다는 것.

자동생성되는 메소드들을 모두 사용하고 싶으면, 이 방법을 쓰지말고 비교 메소드를 따로 만들거나 copy()해서 비교하지 않을 값을 동일하게 바꿔주는 방법이 가능하다. 장단점이 명확하니까, 상황에 따라 본인의 선택이 될듯.

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • Blender : snap을 써서 다른 vertex에 정렬하기
  • KTor Client 기본 사용 정리
  • 게임 만들거다.
  • Using Koin with Android Compose

보관함

2020 12월
일 월 화 수 목 금 토
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 10월   2월 »

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org
©2025 배토의 개발일지 | Built using WordPress and Responsive Blogily theme by Superb