Kotlin, Data 클래스와 Enum 클래스

Yebali·2021년 8월 16일
0

약간의_Kotlin

목록 보기
16/19

Data Class

데이터를 다루는데 최적화된 클래스로 아래 기능을 자동으로 생성해준다

  • equals() : 내용의 동일성을 판단
  • hashcode() : 객체 내용에서 고유한 코드를 생성하는 함수
  • toString()
  • copy()
  • ComponentX() : 속성을 순서대로 반환하는 함수.
    X에 번호를 넣으면 해당 번호에 해당하는 속성이 반환됨

equals(), hahsCode(), toString(), copy() 기능 예시

class General(val name: String, val id: Int)

data class Data(val name: String, val id: Int)

fun main() {        
    val a = General("보잉", 747)
    
    println(a == General("보잉", 747)) // 재대로 구현이 안됨
    println(a.hashCode())             // 재대로 구현이 안됨
    println(a)                        // 재대로 구현이 안됨

    val b = Data("루디", 306)
    
    println(b == Data("루디", 747))
    println(b.hashCode())
    println(b)
    
    println(b.copy())
    println(b.copy("아련"))
    println(b.copy(id = 123))
    
}

componentX() 예시

class General(val name: String, val id: Int)

data class Data(val name: String, val id: Int)

fun main() {        
    val list = listOf(Data("보영",12),
                     Data("루디",34),
                     Data("아린",56))
    
    // 내부적으로 component1(), component2()함수를 사용해서 불러오게 됨
    for((a,b) in list) {
        println("${a}, ${b}")
    }
    
}

Enum Class

enum class State(val message: String) {
    SING("노래를 부른다"),
    EAT("밥을 먹다"),
    SLEEP("잠을 잔다");
    
    fun isSleeping() = this == State.SLEEP
}


fun main() {        
    var state = State.SING
    
    println(state)
    
    state = State.SLEEP
    println(state.isSleeping())
}
profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글