クラスSerializedLambda
java.lang.Object
java.lang.invoke.SerializedLambda
- すべての実装されたインタフェース:
Serializable
public final class SerializedLambda extends Object implements Serializable
ラ ダ式の直列化された形式。 このクラスのプロパティは、静的メタファクトリ引数(プライマリ関数型インタフェース・メソッドの識別情 、実装メソッドの識別情 など)と動的メタファクトリ引数(ラ ダ・キャプチャ時に字句スコープからキャプチャされた値など)を含む、ラ ダ・ファクトリ・サイトに存在する情 を表します。
インスタンスが適切に直列化復元することを保証するために、直列化可能ラ ダの実装(コンパイラ、言語ランタイ ・ライブラリなど)が要求されます。 そのための1つの方法は、writeReplaceメソッドがデフォルト直列化の処理を許可するのではなくSerializedLambdaのインスタンスを返すことを保証することです。
SerializedLambdaには、キャプチャ・クラス内で$deserializeLambda$(SerializedLambda)と呼ばれるstaticメソッド(privateの可能性がある)を見つけ、自身を最初の引数としてそれを呼び出し、結果を返す、readResolveメソッドが用意されています。 $deserializeLambda$を実装するラ ダ・クラスは、SerializedLambdaのプロパティがそのクラスによって実際にキャプチャされるラ ダと一貫性を持つかどうかの検証を担当します。
シリアライズされたフォー の直列化復元によって生成されるファンクション・オブジェクトのアイデンティティは予測不可能であるため、アイデンティティの影響を受ける操作(参照等価性、オブジェクト・ロック、System.identityHashCode()など)によって、異なる実装で異なる結果を生成したり、同じ実装で異なる直列化復元が発生する 合があります。
- 導入されたバージョン:
- 1.8
- 関連 目:
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明SerializedLambda(Class<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs) ラ ダ・ファクトリ・サイトに存在する低レベル情 からSerializedLambdaを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明getCapturedArg(int i) ラ ダ・キャプチャ・サイトへの動的引数を取得します。intラ ダ・キャプチャ・サイトへの動的引数のカウントを取得します。このラ ダをキャプチャしたクラスの名前を取得します。このラ ダが変換された後の、呼び出される型の名前を取得します。このラ ダが変換された後の、関数型インタフェースのプライマリ・メソッドの名前を取得します。このラ ダが変換された後の、関数型インタフェースのプライマリ・メソッドのシグネチャを取得します。実装メソッドを含むクラスの名前を取得します。int実装メソッドのメソッド・ハンドルの種類(MethodHandleInfoを参照)を取得します。実装メソッドの名前を取得します。実装メソッドのシグネチャを取得します。final String型変数がキャプチャ・サイトからのインスタンス化で置換された後の、プライマリ関数型インタフェース・メソッドのシグネチャを取得します。
-
コンストラクタの詳細
-
SerializedLambda
public SerializedLambda(Class<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs) ラ ダ・ファクトリ・サイトに存在する低レベル情 からSerializedLambdaを作成します。- パラメータ:
capturingClass- ラ ダ式が出現するクラスfunctionalInterfaceClass- 返されるラ ダ・オブジェクトの静的型の名前(スラッシュ区切り形式)functionalInterfaceMethodName- ラ ダ・ファクトリ・サイトに存在する関数型インタフェース・メソッドの名前functionalInterfaceMethodSignature- ラ ダ・ファクトリ・サイトに存在する関数型インタフェース・メソッドのシグネチャimplMethodKind- 実装メソッドのメソッド・ハンドルの種類implClass- 実装メソッドを保持するクラスの名前(スラッシュ区切り形式)implMethodName- 実装メソッドの名前implMethodSignature- 実装メソッドのシグネチャinstantiatedMethodType- 型変数がキャプチャ・サイトからのインスタンス化で置換された後の、プライマリ関数型インタフェース・メソッドのシグネチャcapturedArgs- ラ ダによってキャプチャされた変数を表す、ラ ダ・キャプチャ・サイトへの動的引数
-
-
メソッドの詳細
-
getCapturingClass
-
getFunctionalInterfaceClass
public String getFunctionalInterfaceClass()このラ ダが変換された後の、呼び出される型の名前を取得します。- 戻り値:
- このラ ダが変換された後の、関数型インタフェース・クラスの名前
-
getFunctionalInterfaceMethodName
public String getFunctionalInterfaceMethodName()このラ ダが変換された後の、関数型インタフェースのプライマリ・メソッドの名前を取得します。- 戻り値:
- 関数型インタフェースのプライマリ・メソッドの名前
-
getFunctionalInterfaceMethodSignature
public String getFunctionalInterfaceMethodSignature()このラ ダが変換された後の、関数型インタフェースのプライマリ・メソッドのシグネチャを取得します。- 戻り値:
- 関数型インタフェースのプライマリ・メソッドのシグネチャ
-
getImplClass
-
getImplMethodName
-
getImplMethodSignature
-
getImplMethodKind
public int getImplMethodKind()実装メソッドのメソッド・ハンドルの種類(MethodHandleInfoを参照)を取得します。- 戻り値:
- 実装メソッドのメソッド・ハンドルの種類
-
getInstantiatedMethodType
public final String getInstantiatedMethodType()型変数がキャプチャ・サイトからのインスタンス化で置換された後の、プライマリ関数型インタフェース・メソッドのシグネチャを取得します。- 戻り値:
- 型変数処理後の、プライマリ関数型インタフェース・メソッドのシグネチャ
-
getCapturedArgCount
public int getCapturedArgCount()ラ ダ・キャプチャ・サイトへの動的引数のカウントを取得します。- 戻り値:
- ラ ダ・キャプチャ・サイトへの動的引数のカウント
-
getCapturedArg
public Object getCapturedArg(int i) ラ ダ・キャプチャ・サイトへの動的引数を取得します。- パラメータ:
i- キャプチャする引数- 戻り値:
- ラ ダ・キャプチャ・サイトへの動的引数
-