これだけでコンパイラが勝手に以下のものを作ってくれる。ただしクラス内または継承元に明示的に定義されていれば勝手に生成したりしない。 equals()/hashCode()ペア "User(name=John, age=42)"って表示するtoString() 宣言順で内容を取り出すcomponentN()関数 copy() 生成されるコードに一貫性を保つため、データクラスは以下を満たす必要がある。 プライマリコンストラクタは少なくとも1つ引数を持つ 全てのプライマリコンストラクタ引数はvalかvarでマークされている abstract, open, sealed, innerであってはならない データクラスは他のクラスを継承してはいけない(がインターフェースを実装するかもしれない) JVM上では生成されるクラスにパラメータなしコンストラクタが必要になるなら、全てのプロパティにデフォルト値が