- 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のプロパティがそのクラスによって実際にキャプチャされるラムダと一貫性を持つかどうかの検証を担当します。- 導入されたバージョン:
- 1.8
- 関連項目:
LambdaMetafactory、直列化された形式
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 SerializedLambda(Class<?> capturingClass, String functionalInterfaceClass, String functionalInterfaceMethodName, String functionalInterfaceMethodSignature, int implMethodKind, String implClass, String implMethodName, String implMethodSignature, String instantiatedMethodType, Object[] capturedArgs)ラムダ・ファクトリ・サイトに存在する低レベル情報からSerializedLambdaを作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 ObjectgetCapturedArg(int i)ラムダ・キャプチャ・サイトへの動的引数を取得します。intgetCapturedArgCount()ラムダ・キャプチャ・サイトへの動的引数のカウントを取得します。StringgetCapturingClass()このラムダをキャプチャしたクラスの名前を取得します。StringgetFunctionalInterfaceClass()このラムダが変換された後の、呼び出される型の名前を取得します。StringgetFunctionalInterfaceMethodName()このラムダが変換された後の、関数型インタフェースのプライマリ・メソッドの名前を取得します。StringgetFunctionalInterfaceMethodSignature()このラムダが変換された後の、関数型インタフェースのプライマリ・メソッドのシグネチャを取得します。StringgetImplClass()実装メソッドを含むクラスの名前を取得します。intgetImplMethodKind()実装メソッドのメソッド・ハンドルの種類(MethodHandleInfoを参照)を取得します。StringgetImplMethodName()実装メソッドの名前を取得します。StringgetImplMethodSignature()実装メソッドのシグネチャを取得します。StringgetInstantiatedMethodType()型変数がキャプチャ・サイトからのインスタンス化で置換された後の、プライマリ関数型インタフェース・メソッドのシグネチャを取得します。StringtoString()オブジェクトの文字列表現を返します。
-
-
-
コンストラクタの詳細
-
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
public String getCapturingClass()
このラムダをキャプチャしたクラスの名前を取得します。- 戻り値:
- このラムダをキャプチャしたクラスの名前
-
getFunctionalInterfaceClass
public String getFunctionalInterfaceClass()
このラムダが変換された後の、呼び出される型の名前を取得します。- 戻り値:
- このラムダが変換された後の、関数型インタフェース・クラスの名前
-
getFunctionalInterfaceMethodName
public String getFunctionalInterfaceMethodName()
このラムダが変換された後の、関数型インタフェースのプライマリ・メソッドの名前を取得します。- 戻り値:
- 関数型インタフェースのプライマリ・メソッドの名前
-
getFunctionalInterfaceMethodSignature
public String getFunctionalInterfaceMethodSignature()
このラムダが変換された後の、関数型インタフェースのプライマリ・メソッドのシグネチャを取得します。- 戻り値:
- 関数型インタフェースのプライマリ・メソッドのシグネチャ
-
getImplClass
public String getImplClass()
実装メソッドを含むクラスの名前を取得します。- 戻り値:
- 実装メソッドを含むクラスの名前
-
getImplMethodName
public String getImplMethodName()
実装メソッドの名前を取得します。- 戻り値:
- 実装メソッドの名前
-
getImplMethodSignature
public String getImplMethodSignature()
実装メソッドのシグネチャを取得します。- 戻り値:
- 実装メソッドのシグネチャ
-
getImplMethodKind
public int getImplMethodKind()
実装メソッドのメソッド・ハンドルの種類(MethodHandleInfoを参照)を取得します。- 戻り値:
- 実装メソッドのメソッド・ハンドルの種類
-
getInstantiatedMethodType
public final String getInstantiatedMethodType()
型変数がキャプチャ・サイトからのインスタンス化で置換された後の、プライマリ関数型インタフェース・メソッドのシグネチャを取得します。- 戻り値:
- 型変数処理後の、プライマリ関数型インタフェース・メソッドのシグネチャ
-
getCapturedArgCount
public int getCapturedArgCount()
ラムダ・キャプチャ・サイトへの動的引数のカウントを取得します。- 戻り値:
- ラムダ・キャプチャ・サイトへの動的引数のカウント
-
getCapturedArg
public Object getCapturedArg(int i)
ラムダ・キャプチャ・サイトへの動的引数を取得します。- パラメータ:
i- キャプチャする引数- 戻り値:
- ラムダ・キャプチャ・サイトへの動的引数
-
toString
public String toString()
次のクラスからコピーされた説明:Objectオブジェクトの文字列表現を返します。 一般に、toStringメソッドは、このオブジェクトを「テキストで表す」文字列を返します。 この結果は、人間が読める簡潔で有益な情報であるべきです。 すべてのサブクラスで、このメソッドをオーバーライドすることをお薦めします。クラス
ObjectのtoStringメソッドは、オブジェクトがインスタンスになっている元のクラスの名前、アットマーク文字「@」、およびオブジェクトのハッシュ・コードの符号なし16進数表現から構成される文字列を返します。 つまり、このメソッドは次の値と等しい文字列を返します。getClass().getName() + '@' + Integer.toHexString(hashCode())
-
-