public abstract class Record extends Object
すべてのJava言語レコード・クラスの共通のベース・クラスです。
コンパイラによって結合された暗黙的に宣言されたメソッドの説明など、レコードの詳細は、「Java™言語仕様」の8.10項を参照してください。
「レコード・クラス」は、「レコード・コンポーネント」と呼ばれる、固定された値セットの透過的なキャリアである高度な不変性があります。 Javaの言語は、レコード・クラスを宣言するための簡潔な構文を提供し、これによってレコード・コンポーネントはレコード・ヘッダーで宣言されます。 レコード・ヘッダーで宣言されたレコード・コンポーネントのリストは、「レコード記述子」です。
レコード区分に次の必須メンバーがあります: public 「正規コンストラクタ」。記述子はレコード記述子と同じです。各コンポーネントに対応する非公開の最終フィールドであり、名前と型はコンポーネントの名前とタイプが同じで、名前と戻り型がそれぞれのコンポーネントに対応するpublicアクセッサ・メソッドは、名前と戻り型がコンポーネントのものと同じです。 レコードの本文で明示的に宣言されていない場合、これらのメンバーの暗黙的な実装が行われます。
標準コンストラクタの暗黙的な宣言によって、対応するコンストラクタ引数からコンポーネント・フィールドが初期化されます。 アクセッサ・メソッドの暗黙的な宣言では、対応するコンポーネント・フィールドの値が戻されます。 Object.equals(Object)
、Object.hashCode()
およびObject.toString()
メソッドの暗黙的な宣言は、すべてのコンポーネント・フィールドから導出されます。
正規のコンストラクタまたはアクセッサ・メソッドに対して明示的な宣言を提供する主な理由は、コンストラクタ引数の検証、可変コンポーネントに対するデフォルトのコピーの実行、または(たとえば、最小期間に対する季節性の数を減らします。)のコンポーネント・グループの正規化です
すべてのレコード・クラスについて、次の不変条件を保持する必要があります : レコードRのコンポーネントがc1, c2, ... cn
の場合、レコード・インスタンスが次のようにコピーされます:
R copy = new R(r.c1(), r.c2(), ..., r.cn());その後、
r.equals(copy)
である必要があります。- APIのノート:
implements
Serializable
が「直列化可能レコード」と呼ばれるレコード・クラス。 直列化可能レコードは、通常の直列化可能オブジェクトとは異なる直列化および直列化復元されます。 レコードの直列化復元中に、レコード標準コンストラクタが呼び出されてレコード・オブジェクトが構成されます。 readObjectやwriteObjectなどの特定の直列化関連メソッドは、直列化可能レコードでは無視されます。 直列化可能レコードの詳細は、「レコード直列化」を参照してください。- Java言語仕様を参照してください:
-
8.10 レコード・タイプ
- 導入されたバージョン:
- 14
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
Record()
コールするレコード・クラスのコンストラクタです。 -
メソッドのサマリー
修飾子と型 メソッド 説明 abstract boolean
equals(Object obj)
このオブジェクトと他のオブジェクトが等しいかどうかを示します。abstract int
hashCode()
Object.hashCode
の一般規約に従います。abstract String
toString()
Object.toString
の一般的な契約をしています。
-
コンストラクタの詳細
-
Record
protected Record()コールするレコード・クラスのコンストラクタです。
-
-
メソッドの詳細
-
equals
public abstract boolean equals(Object obj)このオブジェクトと他のオブジェクトが等しいかどうかを示します。 レコード・クラスは、Object.equals
の一般的な契約に加えて、次のようにレコード・コンポーネントのアクセッサ・メソッドの結果を標準のコンストラクタに渡すことによって、レコード・インスタンスが"コピー済"の場合にさらに関与する必要があります:R copy = new R(r.c1(), r.c2(), ..., r.cn());
その後、r.equals(copy)
である必要があります。- オーバーライド:
equals
、クラス:Object
- 実装要件:
- 暗黙的に指定された実装は、引数がこのオブジェクトと同じレコード・タイプのインスタンスであり、このレコードの各コンポーネントが引数の対応するコンポーネントと等しい場合にのみ
true
を返します。そうでない場合は、false
が返されます。 コンポーネントc
の等価性は、次のように決定されます:- コンポーネントが参照タイプの場合、コンポーネントは、
Objects.equals(this.c(), r.c()
がtrue
を返す場合にのみ等しいとみなされます。 - コンポーネントがプリミティブ・タイプの場合、対応するプリミティブ・ラッパー・クラス
PW
(int
の対応するラッパー・クラスはjava.lang.Integer
です。)を使用すると、PW.valueOf(this.c()).equals(PW.valueOf(r.c()))
がtrue
を返す場合にのみコンポーネントが同等とみなされます。
- コンポーネントが参照タイプの場合、コンポーネントは、
- パラメータ:
obj
- 比較対象の参照オブジェクト。- 戻り値:
- このオブジェクトが引数に等しい場合は
true
、それ以外の場合はfalse
。 - 関連項目:
Objects.equals(Object,Object)
-
hashCode
public abstract int hashCode()Object.hashCode
の一般規約に従います。- オーバーライド:
hashCode
、クラス:Object
- 実装要件:
- 暗黙的に提供された実装では、すべてのコンポーネントのハッシュ・コード値を、その型が参照型であるコンポーネントについては
Object.hashCode()
に準拠しているか、プリミティブ型であるコンポーネントのプリミティブ・ラッパー・ハッシュ・コードを組み合せて求められます。 - 戻り値:
- このオブジェクトのハッシュ・コード値。
- 関連項目:
Object.hashCode()
-
toString
public abstract String toString()Object.toString
の一般的な契約をしています。- オーバーライド:
toString
、クラス:Object
- 実装要件:
- 暗黙的に提供された実装では、そのタイプが参照タイプであるコンポーネント用の
Object.toString()
のレコード・クラスの名前とすべてのコンポーネントの名前と文字列表現から導出された文字列、およびタイプがプリミティブ・タイプであるコンポーネント用のプリミティブ・ラッパーtoString
メソッドが返されます。 - 戻り値:
- このオブジェクトの文字列表現
- 関連項目:
Object.toString()
-