Data Classes

h_hi·2021년 3월 5일
0

kotlin

목록 보기
8/10

Data Class

data Class 란 data 를 담기 위한 목적으로 생성된 class 로 class 앞에 data 를 붙여줍니다.

data class User(val name: String, val age: Int)

data 클래스는 toString(), equals(), hashCode(), copy(), componentN() 함수들을 자동 생성해 줍니다.
data 클래스는 아래의 요구사항들을 만족해야 합니다.

  • 주 생성자는 적어도 1개의 파라미터를 가져야 한다.
  • 모든 주 생성자의 파라미터들은 val 또는 var 이어야 한다.
  • 데이터 클래스는 abstract, open, sealed, inner 일 수 없다.
  • interface 구현이 가능하다
  • sealed class 상속이 가능하다.

Properties declared in the class body

생성자에 정의된 property 만이 자동 구현된 함수들을 사용할 수 있습니다.

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

Copying

data class 자체를 복사하면서 몇몇 property 의 값을 변경하여 저장할 수 있습니다.

val jack = User(name = "Jack", age = 1)
val olderJack = jack.copy(age = 2)

Data Classes and destructuring declarations

data class 는 구조 분해 할당(Destructuring declaration 이 가능합니다.

구조 분해 할당(Destructuring declaration) 은 구조화된 객체를 분해하여 각 프로퍼티에 접근하는 것을 의미하며 아래 코드와 같이 사용합니다.

val jane = User("Jane", 35)
val (name, age) = jane
println("$name, $age years of age") // prints "Jane, 35 years of age"

위의 코드는 아래와 같이 컴파일 됩니다.

val name = jane.component1()
val age = jane.component2()

componentN 함수를 사용해 각 프로퍼티를 component1, component2, ... 등으로 분해합니다.


Reference
kotlin 원문
https://codechacha.com/ko/data-classes-in-kotlin/
https://deeplify.dev/back-end/kotlin/data-class

profile
안드로이드, flutter 개발자

0개의 댓글