モジュール java.base
パッケージ java.lang

クラスRecord

java.lang.Object
java.lang.Record

public abstract class Record
extends Object
このクラスは、Java言語のプレビュー機能であるrecordsに関連付けられています。 プログラムは、プレビュー機能が有効な場合にのみこのクラスを使用できます。 プレビュー機能は、将来のリリースで削除されるか、Java言語の永続機能にアップグレードされる可能性があります。

すべての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の一般的な契約をしています。

    クラス java.lang.Objectで宣言されたメソッド

    clonefinalizegetClassnotifynotifyAllwaitwaitwait
  • コンストラクタの詳細

    • 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()