경험의 기록

Data Class

Data Class는 data를 다루기 위한 클래스로 편의성을 위하여

  • equals() : 내용의 동일성 판단
  • hashCode() : 객체의 내용에서 고유한 코드를 생성
  • copy() : 객체를 복사하여 새 객체 생성
  • toString() : 포함된 속성을 보기 쉽게 나타내줌
  • componentsN() : 속성을 순서대로 반환

다섯가지 함수를 자동으로 지원해준다.

 

 

fun main(args:Array<String>){

    val a = General("Han",100)

    println(a == General("Han",100))
    println(a.hashCode())
    println(a)

    val b = Data("Kim",200)

    println(b == Data("Kim",200))
    println(b.hashCode())
    println(b)

    println(b.copy())
    println(b.copy("Yeop"))
    println(b.copy(id = 300))


}

class General(val name : String, val id : Int)
// 일반 클래스

data class Data(val name : String, val id : Int)
// 데이터 클래스

 

일반 클래스로 출력한 1,2,3 줄은 기능이 제대로 동작하지 않는것을 볼 수 있고

그 이외의 출력결과들은 기능이 잘 동작하는 것을 확인할 수 있다.

 

fun main(args:Array<String>){

    val list = listOf(Data("Han",100),
    Data("Kim",200))

    for((a,b) in list){
        println("$a , $b")
    } // 내부적으로 component() 함수가 적용되어 순서대로 값을 불러옴
}

class General(val name : String, val id : Int)
// 일반 클래스

data class Data(val name : String, val id : Int)
// 데이터 클래스

또한 리스트에 담긴 데이터 클래스의 컴포넌트들을 하나씩 출력할 수 있다.

 

 

 

Enum class

열거형 클래스로, 상태를 구분하기 위하여 사용하는 클래스이다.

fun main(args:Array<String>) {

    var state = State.SING
    println(state)

    state = State.SLEEP
    println(state.isSleeping())

    state = State.EAT
    println(state.message)
}

enum class State(val message : String) {
    SING("노래"),
    EAT("먹기"),
    SLEEP("잠잠");// 함수를 사용하기 위해 세미콜론 사용

    fun isSleeping() = this == State.SLEEP
    // 잠을 자고 있는지 판별하는 함수
 }

출력시 상태를 출력해주고,

비교시 true가 잘 출력 되었으며,

message를 출력시 안의 패러미터가 출력된 것을 확인할 수 있다.

 

 


참조 : www.youtube.com/watch?v=SKosPXHLT5Q&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=25

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading