Syntax
data class CLassName( val data1: String, val data2: Int)
조건
- 주 생성자에 매개변수가 1개 이상 있어야 한다.
- 주 생성자의 매개변수가 val 또는 var이어야 한다.
- 데이터 클래스는 abstract, slealed, open이 될 수 없다.
- 다른 클래스 확장이 가능하고 인터페이스 적용 가능하다.
데이터 클래스에 들어있는 함수
- toString()
객체의 데이터를 출력하기 위해 알아서 문자열로 바꾸어준다.
예를들어 데이터 클래스 가 아래와 같이 정의 되면
data class Cell(var name: String, var roll: Int)
fun main() {
val p = Cell("Euny", 21)
println(p)
}
위 클래스가 실행되면 p의 출력 값은 Cell(name=Euny, roll=21)일 것이다.
아 그리고 출력값의 syntax는 다음과 같다.
classname(parameter_name: value, parameter_name2: value)
- copy()
객체의 프로퍼티의 복사본을 만들거나 프로퍼티를 수정할 수 있는 함수
data class Record(var name: String, var roll: Int)
fun main() {
var r1 = Record("Ram,8)
println("data of object r1 : $r1")
var r2 = r1.copy()
println("data of copied object r2 : $r2")
var r1 = r1.copy(roll = 10)
println("Moditifed of object r3 : $r3")
}
출력값
data of object r1 : Record(name=Ram, roll=8)
data of copied object r2 : Record(name=Ram, roll=8)
Modified data of r1 : Record(name=Ram, roll=10)
- equals()
data class Record(var name: String, var roll: Int)
fun main() {
val r1 = Record("Ram", 8)
val r2 = r1.copy()
val r3 = r1.copy(roll=10)
if (r1.equals(r2) == true) {
println("r1 and r2 are equal")
} else {
println("r1 and r2 are not equal")
if (r1.equals(r3) == true) {
println("r1 and r3 are equal")
} else {
println("r1 and r3 are not equal")
- hashCode()
data class Record(var name: String, var roll: Int)
fun main() {
val r1 = Recrod("Euny", 99)
val r2 = r1.copy()
val r3 = r1.copy(roll = 22)
println("${r1.hashCode()}")
println("${r2.hashCode()}")
println("${r3.hashCode()}")
}
출력값:
2539466
2539466
2539468
출처: https://www.simplilearn.com/tutorials/kotlin-tutorial/understanding-kotlin-data-class
'Android (Kotlin) > kotlin 문법' 카테고리의 다른 글
[Kotlin] 유용한 기능 (1) | 2023.12.04 |
---|---|
[Kotlin] List - forEach (2) | 2023.12.04 |
[Kotlin] abstract vs interface (1) | 2023.12.03 |
[kotlin] joinToString(prefix, suffix, separator) 리스트를 문자열로 바꾸기 (1) | 2023.12.02 |
[Collection Sort - kotlin] sort(), sortBy(), sortWith() (0) | 2023.11.30 |