1、存取局部變數
可以存取lambda表達式外部的final局部變數:
final int num = 1; Converter<Integer, String> stringConverter = (from) -> String.valueOf(from + num); stringConverter.convert(2); // 3
但是與匿名物件不同的是,變數num並不需要一定是final。在lambda表達式內部企圖改變num的值也是不被允許的。
2、存取成員變數和靜態變數
與局部變數不同,我們在lambda表達式的內部能取得到對成員變數或靜態變數的讀寫權。這種訪問行為在匿名物件裡是非常典型的。
class Lambda4 { static int outerStaticNum; int outerNum; void testScopes() { Converter<Integer, String> stringConverter1 = (from) -> { outerNum = 23; return String.valueOf(from); }; Converter<Integer, String> stringConverter2 = (from) -> { outerStaticNum = 72; return String.valueOf(from); }; } }
以上是Java Lambda的使用範圍是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!