【学習kotlinシリーズ】データクラス

Qiitaでことりん学習帳を発売しています!

データクラスとは

データを作る用のクラスを使う時に、特に(umentuのような)入門者には次のような間違いをすることがある。

/**
 * Created by umentu on 2017/06/18.
 */

// クラスを作る
class DataClass(val id: Int, val name: String)


fun main(args: Array<String>){

    val class1 = DataClass(1, "taro")
    val class2 = DataClass(1, "taro")

    // class1とclass2が一致しているかみてみる
    println(class1 == class2)
    println("-----------------------------")
    // class1、class2をprintしてみる
    println(class1)
    println(class2)

}

実行結果

false
-----------------------------
DataClass@4d7e1886
DataClass@3cd1a2f1

これだと同じデータを入れていても一致していると判定されないから不便。(オブジェクト指向なら当然なところ。)ただ、データクラスを使うことで、class1とclass2を同じものとして扱える。宣言方法は、classの前にdata修飾子をつければいいだけ。

実際に書いてみる

/**
 * Created by umentu on 2017/06/18.
 */

// クラスを作る
data class DataClass(val id: Int, val name: String)


fun main(args: Array<String>){

    val class1 = DataClass(1, "taro")
    val class2 = DataClass(1, "taro")

    // class1とclass2が一致しているかみてみる
    println(class1 == class2)
    println("-----------------------------")
    // class1、class2をprintしてみる
    println(class1)
    println(class2)

}

実行結果

true
-----------------------------
DataClass(id=1, name=taro)
DataClass(id=1, name=taro)