0Pricing
Kotlin Academy · レッスン

Data Classの基本:自動生成されるメソッド

data classが生成するequals、hashCode、toString、copyについて理解します。

「Data Classの基本:自動生成されるメソッド」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。

データクラスとは

data classは、主に値を保持するためのクラスです。Kotlin コンパイラーがequals、hashCode、toString、copy、componentN関数を自動生成します。

データクラスの宣言

通常のクラスの前にdataを付けます。主コンストラクターのすべてのパラメーターはvalまたはvarでなければなりません。

data class User(val name: String, val age: Int)
fun main() {
    val u = User("Ada", 35)
    println(u)
}

自動生成される toString

コンパイラーは、すべてのプロパティを名前付きで列挙するtoStringを生成します。

data class Point(val x: Int, val y: Int)
fun main() {
    println(Point(3, 5)) // Point(x=3, y=5)
}

自動生成される equals

equalsはすべてのプロパティの値を比較します。同じフィールドを持つ2つのインスタンスは、参照の同一性に関係なく等しいと判定されます。

data class Coord(val lat: Double, val lng: Double)
fun main() {
    val a = Coord(41.0, 29.0)
    val b = Coord(41.0, 29.0)
    println(a == b)      // true (structural)
    println(a === b)     // false (reference)
}

自動生成される hashCode

hashCodeはequalsと整合します。等しいオブジェクトは等しいハッシュ値を生成するため、データクラスはセットやマップのキーとして正しく機能します。

data class Key(val id: Int, val tag: String)
fun main() {
    val map = mapOf(Key(1, "a") to "one")
    println(map[Key(1, "a")]) // one
}

自動生成される copy

copy()は同じフィールド値を持つ新しいインスタンスを作成し、名前付き引数でフィールドごとに値を上書きできるようにします。

data class Config(val host: String, val port: Int, val tls: Boolean)
fun main() {
    val dev = Config("localhost", 8080, false)
    val prod = dev.copy(host = "prod.example.com", tls = true)
    println(prod) // Config(host=prod.example.com, port=8080, tls=true)
}

自動生成される componentN

各プロパティにcomponentN()関数(component1、component2、...)が生成され、分解宣言を使用できるようになります。

data class Pair2(val first: String, val second: Int)
fun main() {
    val p = Pair2("Ada", 35)
    val (name, age) = p
    println("$name is $age")
}

データクラスで自動生成されないもの

データクラスでは、継承したフィールドを含むtoStringは生成されません。また、デフォルトでfinalとなり、abstract、open、sealed、innerにすることもできません。

data class Sample(val n: Int)
// open data class Bad(...) // ERROR
// sealed data class Bad(...) // ERROR
fun main() { println(Sample(1)) }

主コンストラクター外のプロパティ

クラス本体で宣言されたプロパティは、equals、hashCode、toString、copyには参加しません。

data class Person(val name: String) {
    var nickname: String = ""
}
fun main() {
    val a = Person("Ada").apply { nickname = "Augusta" }
    val b = Person("Ada").apply { nickname = "Different" }
    println(a == b)   // true — only name matters
    println(a)         // Person(name=Ada)
}

デフォルト値

data classとデフォルトパラメーターを組み合わせると、柔軟にインスタンスを生成できます。

data class Request(
    val url: String,
    val method: String = "GET",
    val headers: Map<String, String> = emptyMap()
)
fun main() {
    println(Request("https://api.example.com"))
}

実践:DTO クラス

データクラスは DTO、API レスポンス、値オブジェクトに最適です。

data class ApiResponse(
    val status: Int,
    val body: String,
    val timestamp: Long
)
fun main() {
    val ok = ApiResponse(200, "{}", System.currentTimeMillis())
    println(ok)
}

クイックチェック

データクラスに対して Kotlin コンパイラーが自動生成しないメソッドはどれですか?

まとめ

data classは、主コンストラクターのプロパティからequals、hashCode、toString、copy、componentNを自動生成します。コンストラクター外のプロパティは対象外です。DTO、値オブジェクト、関連する値をまとめるコンテナーにはデータクラスを使用します。

よくある質問

「Data Classの基本:自動生成されるメソッド」レッスンは無料ですか?

はい。「Data Classの基本:自動生成されるメソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。

「Data Classの基本:自動生成されるメソッド」で何を学びますか?

data classが生成するequals、hashCode、toString、copyについて理解します。 ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kotlin Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Data Classの基本:自動生成されるメソッド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKotlin Academyレッスンでコードを書いて実行できますか?

はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Data Classの基本:自動生成されるメソッド
  2. copy()と部分的なオーバーライドによるコピー
  3. componentNによる分割代入宣言
  4. コレクションとMapキーで使うData Class
← Kotlin Academyに戻る