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

クラス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
関連項目: