ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin Data Class
    개발 이야기/TIL 2023. 1. 17. 15:46

    코틀린의 Data Class는 일반적인 Class와 다르게 데이터를 다룰때 편한 class이다. 

    특징

    코틀린에서 getter와 setter를 컴파일 타임에서 생성해주는 것처럼, data class는 컴파일 타임에서 equls(), hashCode(), toString(), copy(), componentN()를 생성해준다. 

     

    기본생성자를 1개 이상 가져야하고, val or var로 선언해야한다. 

    상속을 받을 수 없다(부모클래스에서 내부적으로 자동생성하는 함수들이 있는 경우 충돌이 날 수도 있다)

     

    equals()

    내용이 같은지 판단하여, 값이 일치하면 true, 불일치시 false를 반환한다(type은 비교하지 않는다)

    fun main(){
    	val a = User(10,"진혁")
        println(a==User(10,"진혁"))
    }
    
    data class User(val id:Int, var name:String)

    hashCode()

    주어진 객체의 hash값을 반환한다. 동일한 객체는 동일한 해시값을 반환받는다. 

    fun main(){
    	val a = User(10,"진혁")
        val b = User(10,"진혁")
        println(a.hashCode())
        println(b.hasCode())
    }
    
    data class User(val id:Int, var name:String)

    copy()

    객체를 복사하여, 내용이 같은 새로운 객체를 만든다. 값을 넣으면, 해당하는 값만 update 가능하다.

    fun main(){
    	val a = User(10,"진혁")
        val b = a.copy()
        val c = a.copy(name="현")
        //b = User(10,"진혁")
        //c = User(10,"현")
        
    }
    
    data class User(val id:Int, var name:String)

    componentN()

    객체의 property를 순서대로 반환가능하다. 혹은 나누어 저장할 수 있다. 

    fun main(){
    	val a = User(10,"진혁")
    	val (id,name) = a
        // val id = a.id val name = a.name과 동일
        
    }
    
    data class User(val id:Int, var name:String)

    kotlin에서는 사용자 편의를 위해 다양한 기능을 제공하는 것 같다. 

Designed by Tistory.