データクラス

Kotlinの「データクラス(data class)」は、データの保持(状態の管理)を目的としたクラスを簡潔に定義するためのKotlin特有の機能です。通常のクラスに比べて、toString()equals()hashCode()copy()などのメソッドを自動生成してくれるため、ボイラープレートコード(定型文)を大幅に削減できます。


データクラスの基本構文

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

上記のようにdataキーワードをクラス宣言の前につけることで、Kotlinのデータクラスになります。


自動生成されるメソッド

データクラスを定義すると、以下のようなメソッドが自動的に生成されます:

メソッド名 説明
toString() オブジェクトの内容を文字列として出力する。例:User(name=Alice, age=20)
equals() 値が同じかを比較する。参照でなく内容で比較される。
hashCode() ハッシュ値を生成(MapやSetに利用される)。
copy() 一部のプロパティだけ変更した新しいオブジェクトを作成する。
componentN() 分解宣言(destructuring declaration)用の関数が生成される。

例:データクラスの活用例

kotlin
fun main() { val user1 = User("Alice", 20) val user2 = user1.copy(age = 21) println(user1) // 出力: User(name=Alice, age=20) println(user2) // 出力: User(name=Alice, age=21) println(user1 == user2) // 出力: false(内容が異なるため) val (name, age) = user2 // 分解宣言 println("Name: $name, Age: $age") }

データクラスの要件(ルール)

データクラスにはいくつかの制約があります:

  1. 主コンストラクタには最低1つ以上のプロパティが必要valまたはvarであること)。

  2. すべてのプロパティは主コンストラクタに含まれていなければならない

  3. クラスはabstractopensealedinnerにはできない

  4. 継承はできない(ただしインターフェースの実装は可能)。


用途とメリット

  • DTO(Data Transfer Object)やモデルクラスとしての利用に最適。

  • Kotlinの機能(copy, ==, toStringなど)と組み合わせることでコードの可読性・保守性が向上。

  • Javaで同様の機能を実現するには多くの冗長なコードが必要だが、Kotlinでは数行で済む。


まとめ

Kotlinのデータクラスは、「データ保持のためのクラスを最小限のコードで表現する」ことを目的としており、Kotlinらしい簡潔さと表現力を活かすことができる機能です。特にモデルや設定クラス、APIレスポンスの構造体などにおいて非常に有効です。

生成日:2025/05/04