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

50種類以上のIT教材を無料で使える!
0円から学習できるオンラインITスクール「侍テラコヤ」
→さっそく登録する
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とは特に何かしらの処理を行うわけではないがデータだけ持っているクラスを作ることができます。つまり、データだけを持ったクラスが生成できるのです。


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

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はとても便利なものですので、まだ使っていなかったという方はガンガン使いこなせるようになっていきましょう!

それでは!!

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

Writer

かい

日向徹かこよすぎか

kaikaikai8217@gmail.com

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close