클래스 중에서는 데이터만 다루는 클래스가 있다. 이 데이터 클래스 앞에 data를 붙이면 데이터를 수월하게 관리할 수 있는데, 장점도 있다.
- Any 클래스 내부의 함수들이 자동으로 오버라이딩 된다.
- toString을 사용하면 Employee(name=John, age=32, salary=180) .. 같이 객체 클래스명(프로퍼티 값 모음)으로 리턴된다.
- copy 함수를 사용할 수 있다. 이를 이용하면 객체를 복사할 수 있다.
package dataClassEx
data class Employee(val name : String , val age : Int, val salary : Int)
fun main() {
val first = Employee("John", 32, 180)
val second = Employee("Page", 34, 200)
val third = first.copy()
println(first.toString())
println(third.toString())
println(first == second)
println(first == third)
}
결과 :
Employee(name=John, age=32, salary=180)
Employee(name=John, age=32, salary=180)
false
true
third는 카피되어 first와 같은 객체가 되었다. 따라서 프로퍼티가 같으므로 true가 된다.
데이터 클래스에 한해 객체를 분해할 수도 있는데,
package dataClassEx
data class Employee(val name : String , val age : Int, val salary : Int)
fun main() {
val (name, age, _) = Employee("John", 32, 180)
println(name); println(age)
}
다음과 같이 객체명을 지정하면 나누어서 객체를 설정할 수 있다. 사용하지 않을 프로퍼티는 _ 로 무시할 수 있다.
결과 :
John
32
반응형
'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글
Kotlin] 32. 함수 참조(Function Reference) (0) | 2020.12.10 |
---|---|
Kotlin] 31. 함수 리터럴 (0) | 2020.12.10 |
Kotlin] 29. 중첩 클래스 (0) | 2020.12.10 |
Kotlin] 28. 다이아몬드 문제 (0) | 2020.12.10 |
Kotlin] 27. lateinit (0) | 2020.12.10 |