Language/Kotlin
코틀린 Data Class
Hinos
2019. 12. 26. 13:57
반응형
코틀린에는 자바엔 없는 DataClass라는 것이 있다.
여태 자바처럼 짜는 것에 익숙해져서 공부 안하고 있다가 깊은 복사와 해체 기능을 손쉽게 사용할 수 있다는 점을 알고 정리를 해놓으려고 한다.
말이 필요없다 코드 ㄱㄱ
1. 해체
fun main(args: Array<String>)
{
val arrData = mutableListOf<Data>()
var vo = Data()
vo.indx = 1
vo.name = "김비서"
arrData.add(vo)
vo = Data()
vo.indx = 2
vo.name = "박비서"
arrData.add(vo)
arrData.forEachIndexed { _, data ->
val (indx, name) = data
println("$indx , $name")
}
}
data class Data(var indx : Int = 0, var name : String = "")
// 결과
1 , 김비서
2 , 박비서
데이터 객체의 멤버들을 손쉽게 새로운 변수에 세팅할 수 있다는점!
데이터 클래스가 아니라면 data.indx, data.name 이런식으로 변수이름을 매번 써줘야하는 귀찮음이 따랐을 것이다.
2. 깊은 복사
val vo = Data()
vo.indx = 1
vo.name = "김비서"
val vo2 = vo.copy()
vo2.indx = 50
vo2.name = "박비서"
val vo3 = Data()
vo3.indx = 100
vo3.name = "이비서"
val vo4 = vo3
vo4.indx = 1000
vo4.name = "한비서"
println("1. ${vo.indx} , ${vo.name}")
println("2. ${vo2.indx} , ${vo2.name}")
println("3. ${vo3.indx} , ${vo3.name}")
println("4. ${vo4.indx} , ${vo4.name}")
//결과
1. 1 , 김비서
2. 50 , 박비서
3. 1000 , 한비서
4. 1000 , 한비서
copy 함수를 통해 깊은 복사가 가능하다는 것을 알 수 있다.
반응형