何もしない、データを保持するためだけのクラスを作成することはよくあります。そのようなクラスでは、いくつかの標準機能は、データから機械的に推論できます。Kotlinでは、これは データクラス と呼ばれ、 data としてマークされています。
これらの機能のいずれかが明示的にクラス本体に定義されているか、基本型から継承されている場合は、生成されません。
生成されたコードの一貫性と意味のある動作を保証するために、データクラスは、次の要件を満たさなければなりません:
JVM上で、生成されたクラスがパラメータなしのコンストラクタを持つ必要がある場合は、すべてのプロパティのデフォルト値を指定する必要があります(コンストラクタを参照してください)。
data class User(val name: String = "", val age: Int = 0)
コピー
プロパティの いくつか を変更し、残りをそのままにしてオブジェクトをコピーする、ということが必要になるのはよくあることです。これが copy() 関数が作成される理由です。次のような User クラスの場合、その実装は次のようになります。
データクラスと分解宣言 (Destructuring Declarations)
データクラスのために生成した コンポーネント関数 は、分解宣言内で使用できます。
標準データクラス
標準ライブラリは、 Pair と Triple を提供します。プロパティのために意味のある名前を提供することにより、コードを読みやすくするため、というのが理由です。ほとんどのケースでは、名前付きデータクラスは、設計上のより良い選択ですが。