Develop/Kotlin

[Kotlin] Data class

JunJangE 2024. 4. 3. 14:07

Data class가 뭐야? 🤔

data class는 데이터를 저장하는 데 주로 사용된다. 내부적으로 toString(), hashCode(), equals(), copy() 메서드를 자동으로 생성해주어 편리하게 사용할 수 있다. 이 특징으로 인해 주로 엔터티(Entity)로 사용되거나 RecyclerView에서 아이템을 비교할 때 장점을 얻기 위해 활용된다.

RecyclerView에서는 변경된 목록을 효율적으로 처리하기 위해 DiffUtil 클래스가 사용된다. DiffUtil은 두 목록 간의 변경 사항을 계산해야 하는데, 이때 data class의 equals() 메서드를 사용하여 각 항목을 비교한다. 두 목록에서 같은 위치에 있는 항목이 동일한 객체로 간주되어야 하며, 이는 equals() 메서드를 사용하여 확인된다. 이러한 이유로 data class는 DiffUtil과 함께 사용하기에 특히 유용하다. 따라서 데이터 클래스를 사용하면 RecyclerView에서 목록 간의 변경 사항을 쉽게 처리할 수 있다.

  • 코틀린의 Data class는 주로 데이터를 보관하는 데 사용된다.
  • toString(), hashCode(), equals(), copy()메소드를 자동으로 만들어주는 클래스이다.
  • toString()은 주소값이 아닌 생성자에 정의된 프로퍼티가 출력된다. 포함된 프로퍼티를 나열해서 보기쉽게 자동 구현해준다.
  • hashCode()는 주어진 객체를 해싱 알고리즘에 의해 계산한 int 값을 return 한다. 동일한 객체는 동일한 해시코드를 반환한다.
  • equals()는 내용의 동일성을 판단하며 인스턴스가 아닌 값이 일치하는지 비교한다. return 타입은 boolean이다.
    • 동일성 : 값이 동일한지
      • [Java] equals
      • [Kotlin] ==
    • 동등성 : 메모리상 동일한 객체인지
      • [Java] ==
      • [Kotlin] ===
  • copy() 함수는 객체를 복사하여 같은 내용의 새 객체를 만든다.
  • Android View를 사용한다면 RecyclerView.DiffUtil에 활용도 가능하다.

'Develop > Kotlin' 카테고리의 다른 글

[Kotlin] 얼렁뚱땅 inline 탐험일지 🧐  (0) 2024.04.06
[Kotlin] 확장 함수  (0) 2024.04.03
[Kotlin] enum와 sealed class  (0) 2024.02.26
[kotlin] Android 4대 컴포넌트  (2) 2023.08.30
[kotlin] 코틀린 기본 문법  (0) 2022.12.06