Java8 中的 Lambda 表達式:匿名類別的替代品?
隨著 Java8 中 lambda 表達式的引入,問題出現了:有匿名類別嗎?類已經過時了嗎?
Lambda 表達式:簡明解決方案
Lambda 表達式為定義單方法介面提供了緊湊且易於閱讀的語法。如Collection 的排序方法所示,lambda 表達式消除了對匿名比較器實現的需要:
Collections.sort(personList, new Comparator<Person>() { public int compare(Person p1, Person p2){ return p1.firstName.compareTo(p2.firstName); } });
變成:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
當Lambda 表達式不足時
儘管lambda 表達式很簡單,但它也有限制。它們只能與單方法介面一起使用,不能提供狀態或定義附加方法。這意味著在以下情況下,匿名類別仍然是必要的:
Lambda 表達式的優點
在其範圍內,lambda 表達式比匿名類別具有優勢:
結論
結論結論結論Lambda 表達式尚未取代Java8 中的匿名類別。雖然匿名類別為單一方法函數提供了方便的快捷方式,但對於需要狀態、繼承或其他方法的情況來說,匿名類別仍然至關重要。兩種特性共存,為 Java 程式設計中的不同場景提供靈活、合適的解決方案。以上是Java 8 中的 Lambda 表達式會取代匿名類別嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!