data Class 란 data 를 담기 위한 목적으로 생성된 class 로 class 앞에 data
를 붙여줍니다.
data class User(val name: String, val age: Int)
data 클래스는 toString()
, equals()
, hashCode()
, copy()
, componentN()
함수들을 자동 생성해 줍니다.
data 클래스는 아래의 요구사항들을 만족해야 합니다.
val
또는 var
이어야 한다.생성자에 정의된 property 만이 자동 구현된 함수들을 사용할 수 있습니다.
data class Person(val name: String) {
var age: Int = 0
}
data class 자체를 복사하면서 몇몇 property 의 값을 변경하여 저장할 수 있습니다.
val jack = User(name = "Jack", age = 1)
val olderJack = jack.copy(age = 2)
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