型別推斷衝突阻礙反向Lambda 比較器
儘管Java 8 的Comparator.reversed() 方法被廣泛使用,但組合時會帶來編譯障礙使用lambda表達式,導致以下結果錯誤:
此問題源自於編譯器類型推論機制的限制。當 lambda 表達式與 Comparator.comparing() 一起使用時,它需要目標類型來推斷參數的類型。在第一個例子中,由於以下目標類型,u被確定為User類型:
但是,當引入reverse()時,目標類型被打亂,編譯器無法再推斷正確的類型。
要解決此問題,可以求助於使用方法引用,它提供了額外的類型資訊:
或者,可以在lambda 中指定明確參數類型:
未來的編譯器增強功能是否會解決此類型推斷障礙還有待觀察。
以上是為什麼 Java 8 的 Comparator.reversed() 會導致 Lambda 表達式的型別推斷衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!