【Kotlin/Android Studio】data classとは?クラスとの違いと使い方

この記事からわかること

  • Android Studio/Kotlindata class使い方
  • 普通クラスとの違い
  • 自動生成されるメソッド
  • copycomponentNequalsの使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

参考文献:公式リファレンス:Data classes

環境

data classとは?

Kotlinのdata classとはデータを扱うことに特化したクラスのことです。dataマークをつけるだけでデータクラスにすることが可能です。

data class User(val name: String, val age: Int)

data classにすることでインスタンスの比較やコピーなどする機能が自動で生成されます。これにより普通のクラスよりよりデータとして扱いやすくなります。

普通のクラスとの違い

通常のクラスとの違いは自動で生成される機能があるかないかです。data classで自動生成されるクラスは以下の通りです。

上記の中でequals/hashCode/toStringに関してはAnyクラスの持つメソッドなので普通のクラスも使用することができます。

公式リファレンス:Any?.toString()

componentN/copyはdata classに自動実装されるクラスです。

実装条件

data classを実装するためには以下の条件を満たしている必要があります。

使用例

data class User(val name: String, val age: Int)

class UserClass {
    constructor(name: String,age: Int){
        this.name = name
        this.age = age
    }
    var name: String = ""
    var age: Int = 0
}

d_user.equals(d_user)
d_user.hashCode()
d_user.toString()
d_user.component1()
d_user.component2()
d_user.copy()

c_user.equals(c_user)
c_user.hashCode()
c_user.toString()

copyメソッドの使い方

copyメソッドはオブジェクトをコピーできます。引数にプロパティ値を渡すと一部だけを上書きしてコピーすることも可能です。

val ame = User(name = "ame", age = 25)
val olderAme = ame.copy(age = 26)

分割宣言

data classの中身を分割して変数に格納することも可能です。

val (name, age) = ame
println("$name, $age years of age")

PairとTriple

data classの仲間としてPairTripleが定義されています。

Pair("ame", 27)
Triple("ame",27,175)

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index