ラムダの比較: 実装と解釈
問題:
オブジェクトのリストが与えられた場合ラムダ式を使用して定義されていますが、等しいかどうか検査して比較することは可能ですか?
実装の考慮事項:
実装の観点から、非キャプチャ ラムダは同じように評価されます。キャプチャ サイトは同じインスタンスを生成し、参照の等価性を使用して比較できます。ただし、異なるサイトでキャプチャされた個別のラムダ式は、異なる合成クラスにマップされる場合があります。
仕様の影響:
言語仕様は、ラムダ式の評価結果のみを保証します。ターゲット関数インターフェイスのインスタンスです。結果の ID やエイリアスは指定されません。この柔軟性により、ラムダ評価ごとに一意のインスタンスを作成せずに実装でパフォーマンスを最適化できます。
メソッド参照の同等性:
メソッド参照は、定義を調整するための実用的なシナリオを提供する可能性があります。リスナーとしての使用をサポートする等価性。これは将来の改訂に向けて検討中です。
詳細な評価:
2 つのラムダが等しいかどうかを判断するには、それらの動作関数、キャプチャされた引数、関数インターフェイスを比較する必要があります。に変換されます。ただし、シリアル化不可能なラムダについてこの情報を取得するのは困難な場合があります。
設計上の決定:
Java 専門家グループは、ラムダの等価性比較のための情報を公開する価値はないと結論付けました。大多数のユーザーにとってパフォーマンスが低下します。ただし、toString() 表現を改善する実現可能性については、今後の議論の余地があります。
以上がJava でラムダの同等性を比較できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。