본문 바로가기

Language/Kotlin

코틀린 Data Class

반응형

코틀린에는 자바엔 없는 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 함수를 통해 깊은 복사가 가능하다는 것을 알 수 있다.

반응형