クラス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- キャプチャする引数- 戻り値:
- ラムダ・キャプチャ・サイトへの動的引数
-