【Kotlin入門】data classとは?その使い方やメリットを解説


Kotlinでdata classの使い方がよくわからない
data classってなんだろう
data classを使うとどんなメリットがあるんだろう

Kotlinの学習を始めたての方でdata classについて、これは何だと困惑している方はいませんか。

こんにちは!エンジニアのかいです。Kotlinをこれから始めようとしている人、もしくは始めたての人であればdata classというものがでてきたときによく使い方がわからなかったり、メリットがわからなかったりしますよね。

そこで本日はKotlin初心者の方を対象にdata classの意味や使い方、使うメリットなどを丁寧に解説していきます!

この記事はこんな人のために書きました。

  • data classとは何かわからない
  • data classの基本的な使い方が知りたい
  • data classを使うメリットを知りたい

目次

kotlin data classとは

さて、それでは最初にdata classとはどういうものなのかということについて簡単に説明しておきます。

data classとは特に何かしらの処理を行うわけではないがデータだけ持っているクラスを作ることができます。つまり、データだけを持ったクラスが生成できるのです。

data classのメリットとは

データのみを持ったクラスを作ることにどんなメリットがあるか考えてみましょう。まずそもそも、データのみを保持し他クラスを作りたいという場合はコードを書いている上で多々あると思います。

データのみを保持するクラスをよく作るわけですが、そこで使いたいメソッドで大体同じものがあったりします。代表的なものだとtoStringとかですかね。

Kotlinでdata classを使うメリットはそんなよく使うメソッドを自動で生成してくれることなんですね。

つまりどういうことかというと、普通にデータをを保持するクラスを書くと、以下のようになります。

class Score{
    var subject: String? = null
    var score: Int = 0
}

fun main(args: Array<String>) {
    val ins = Score()

    ins.subject = "math"
    ins.score = 80

    println(ins)
}
Score@65ab7765

これをdata classを使って書くと以下のようになります。

data class Score(val subject: String, var score: Int)

fun main(args: Array<String>) {
    val ins = Score("math", 80)

    println(ins)
}
Score(subject=math, score=80)

このようにdata classを使うとメソッドが自動的に生成されていることがわかりますね。

data classの使い方

それでは、先にチラッとあげてしまいましたが、実際の使い方を説目していきます。

とは言っても簡単で、dataという修飾子をclassの前につけてあげるだけでそれらはdata classとして扱われます。

上記のようにからも分かる通り、このように、dataを付加するだけでdata classは実装できますね。

data class Score(val subject: String, var score: Int)

toString

それでは、実際に実装されるメソッドについて一つずつみていきましょう。

toStringについては上記のコードであげたとおり普通のクラスでは、ハッシュ値が表示されていたのがStringで表示されているとこで確認ができますね。

hashCode()

data class Score(val subject: String, var score: Int)

fun main(args: Array<String>) {
    val ins = Score("math", 80)

    println(ins.hashCode())
}
103668296

ハッシュコードを得るのも簡単です。

componentN()

componentNはkotlinでdata classを使う上でも特に便利な機能です。

data class Score(val subject: String, var score: Int)

fun main(args: Array<String>) {
    val ins = Score("math", 80)

    val sub = ins.component1()
    val sco = ins.component2()

    println(sub)
    println(sco)
}
math
80

こんな感じでN番目のcomponentを取り出すことができたり、

data class Score(val subject: String, var score: Int)

fun main(args: Array<String>) {
    val ins = Score("math", 80)
    val (a,b) = ins

    println(a)
    println(b)
}
math
80

こんな感じで値をa, bに代入することも可能です。

まとめ

今回は、kotlinのdata classにおけるメリットや、そこで得られる主要な関数などを紹介してきました。data classはとても便利なものですので、まだ使っていなかったという方はガンガン使いこなせるようになっていきましょう!

それでは!!

この記事を書いた人

日向徹かこよすぎか

kaikaikai8217@gmail.com

目次