比較 Lambda 表達式
問:有沒有辦法比較 lambda 表達式?
答:Java 語言規範沒有定義比較 lambda 表達式的方法,但它允許實作提供自己的比較方法。
實作注意事項
目前,有實現 lambda 的合成類與程式中的捕獲站點之間是 1:1 的關係。因此,在同一捕獲位點捕獲同一變數的兩個 lambda 表達式將由同一實例表示,並且可以使用引用相等進行比較。但是,如果兩個 lambda 表達式在不同的捕獲位點捕獲相同的變數或不捕獲,則它們可能由不同的實例表示,並且無法使用引用相等進行比較。
替代方案
如果需要比較 lambda 表達式,一種替代方法是使用序列化。可序列化的 lambda 可以使用其序列化形式進行比較。另一種替代方法是使用方法來引用而不是 lambda 表達式。如果方法引用引用相同的方法,則可以使用引用相等進行比較。
人類可讀的輸出
目前無法取得人類可讀的字串lambda 表達式的表示。但是,可以使用反射來提取 lambda 表達式參考的方法的名稱。
以上是Java 中的 Lambda 表達式可以比較嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!