問題タブ [java-runtime-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
191 参照

java - Java SerializedLambda の captureClass と implClass の違いは何ですか?

SerializedLambda の署名は次のとおりです。

SerializedLambda(CaptureClass の文字列、機能のインターフェイス クラスの文字列、機能のインターフェイス メソッド名の文字列、機能のインターフェイス メソッドの文字列の署名、int implMethodKind、文字列の implClass、文字列の implMethodName、文字列の implMethodSignature、文字列のインスタンス化されたメソッド タイプ、オブジェクト [] CaptureArgs)

これで、キャプチャ クラスが 1 つであることがわかりますdeserializeLambda

SerializedLambda には、キャプチャ クラスで $deserializeLambda$(SerializedLambda) と呼ばれる (おそらくプライベートな) 静的メソッドを探す readResolve メソッドがあり、それ自体を最初の引数として呼び出します。

しかし、私は何implClassのために得られませんでした。

実装メソッドを含むクラスの名前を取得します。

キャプチャークラスは実装メソッドのクラスではないでしょうか?これらのフィールドに含まれる値を確認するためにラムダ関数をシリアル化しようとしましたが、クラスは同じでした。implClassとはどう違いcapturingClassますか?