W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
lambda表達式不定義自己的范圍。
如果我們在lambda中使用關鍵字 this
和 super
表達式在方法中,它們的行為與我們在該方法中使用它們一樣。
以下代碼從lambda表達式輸出this。這在lambda表達式中是指外部類不是lambda表達式本身。
import java.util.function.Function; public class Main { public Main(){ Function<String,String> func1 = x -> {System.out.println(this);return x ;}; System.out.println(func1.apply("")); } public String toString(){ return "Main"; } public static void main(String[] argv) { new Main(); } }
上面的代碼生成以下結果。
Main方法中的第一行具有 x
的變量定義。
如果我們刪除注釋,我們會得到編譯時錯誤,因為它與lambda表達式的變量定義沖突。
這是另一個演示,顯示lambda表達式與其外部方法具有相同的范圍。 lambda表達式不會創(chuàng)建自己的作用域。
import java.util.function.Function; public class Main { public Main(){ //int x= 0; Function<String,String> func1 = x -> {System.out.println(this);return x ;}; System.out.println(func1.apply("")); } public String toString(){ return "Main"; } public static void main(String[] argv) { new Main(); } }
上面的代碼生成以下結果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: