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