Lambda 表達式中System.out::println 方法引用的等價
在Java 中,System.out::println 方法引用允許有關引用System.out.println() 方法的簡潔方法。它計算 System.out 並將其分配給一個變數。
問題:
提供相同行為的System.out::println 對應的lambda 表達式是什麼?
答案:
完全等效的lambda 表達式為:
num -> { PrintStream p = Objects.requireNonNull(System.out); p.println(num); }
此lambda 表達式擷取對System.out 中的引用執行println 方法之前的變數。這可以防止對 System.out 的任何變更影響 lambda 表達式的行為。
與簡單Lambda 表達式的區別:
更簡單的lambda 表達式,如num -> System.out.println(num) 每次呼叫時都會評估System.out,使其在執行lambda 時容易受到System.out 中的變更的影響。
用法:
等效的lambda 表達式的使用方式與System.out::println 相同,如:
Listnumbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); numbers.forEach(num -> { PrintStream p = Objects.requireNonNull(System.out); p.println(num); });
這段代碼會將清單中的數字列印到控制台。
以上是相當於 System.out::println 方法所引用的 lambda 表達式是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!