データクラスの宣言
簡潔なモデルクラスを作成します
「データクラスの宣言」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
データを保持するクラス
ユーザー、座標、結果など、いくつかの値をまとめることだけを目的としたクラスは数多くあります。
Kotlinにはデータクラスがあり、多くの機能を自動的に備えたモデルクラスを簡潔に宣言できます。
データクラスの宣言
class の前に data キーワードを追加し、コンストラクターにプロパティを列挙します。
この1行だけで、十分な機能を備えたモデルになります。
data class User(val name: String, val age: Int)
fun main() {
val u = User("Alice", 30)
println(u.name)
println(u.age)
}自動生成されるtoString
データクラスでは、読みやすい toString() が自動生成されます。オブジェクトを出力すると、クラス名とプロパティの値が表示されます。
通常のクラスでは分かりにくいハッシュ値が出力されることと比較してみてください。
data class User(val name: String, val age: Int)
fun main() {
val u = User("Bob", 25)
println(u)
}プロパティは必須
データクラスでは、プライマリコンストラクターに少なくとも1つのプロパティを宣言する必要があります。
各パラメーターは val または var にして、生成される関数が利用できるプロパティにする必要があります。
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 4)
println(p)
}valとvarのプロパティ
読み取り専用のプロパティには val を、変更可能なプロパティには var を使います。
不変のデータクラスは、通常、動作を理解しやすいため好まれます。
data class Counter(var count: Int)
fun main() {
val c = Counter(0)
c.count = 5
println(c)
}パラメーターのデフォルト値
通常のコンストラクターと同じように、データクラスにもデフォルト値を設定できます。
これにより、呼び出し側は設定する必要のないパラメーターを省略できます。
data class User(val name: String, val active: Boolean = true)
fun main() {
val u = User("Mia")
println(u)
}名前付き引数
データクラスと名前付き引数を組み合わせると、意図が明確で自己説明的な構築ができます。
複数のプロパティが同じ型を持つ場合に、特に役立ちます。
data class Rect(val width: Int, val height: Int)
fun main() {
val r = Rect(width = 10, height = 5)
println(r)
}メソッドの追加
データクラスにも、独自の関数や計算プロパティを含む本体を定義できます。
自動生成される関数は、追加した要素と共存します。
data class Circle(val radius: Double) {
fun area(): Double = 3.14159 * radius * radius
}
fun main() {
val c = Circle(2.0)
println(c.area())
}コンストラクター外のプロパティ
生成される関数で使用されるのは、プライマリコンストラクター内のプロパティだけです。
本体で宣言したプロパティはオブジェクトの一部ですが、toString や equals などの関数では無視されます。
data class User(val name: String) {
var nickname: String = ""
}
fun main() {
val u = User("Alex")
u.nickname = "Al"
println(u) // nickname not shown
println(u.nickname)
}データクラスを使う場面
オブジェクトが主に値を保持する場合は、データクラスを使うとよいでしょう。
- DTOとAPIモデル
- 座標、範囲、結果
- 設定のまとまり
複雑な振る舞いや継承を中心に設計されたクラスには、データクラスを使わないでください。
まとめて確認
データクラスは、簡潔にモデルを宣言するための仕組みです。
dataを先頭に付けてプロパティを列挙しますtoString、equals、hashCode、copyが自動的に利用できます- デフォルト値、名前付き引数、追加のメソッドをサポートします
data class Book(val title: String, val pages: Int = 0)
fun main() {
val b = Book(title = "Kotlin", pages = 300)
println(b)
}理解度チェック
データクラスの宣言について理解度を確認しましょう。
まとめ
データクラスの宣言方法を学びました。
dataキーワードによって標準的な関数が生成されます- コンストラクターのプロパティが生成される機能の基盤になります
- デフォルト値と名前付き引数によって柔軟に使えます
次は、自動生成される copy 関数と equals 関数を詳しく見ていきます。
よくある質問
「データクラスの宣言」レッスンは無料ですか?
はい。「データクラスの宣言」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「データクラスの宣言」で何を学びますか?
簡潔なモデルクラスを作成します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「データクラスの宣言」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- データクラスの宣言
- copyとequals
- 分解宣言
- コレクション内のデータクラス