Java 中 lambda 表示式的作用域規則是什麼?
Java 中 lambda 表示式的作用域規則有所不同。在 lambda 表示式中,this 和 super 關鍵字是 詞法作用域 ,這意味著 this 關鍵字 引用封閉型別的物件,而 super 關鍵字 引用封閉的超類。對於 匿名類 ,它們相對於匿名類本身。類似地,lambda 表示式中宣告的 區域性變數 與封閉類中宣告的變數衝突。對於匿名類來說,它們被允許掩蓋封閉類中的變數。
示例
@FunctionalInterface interface TestInterface { int calculate(int x, int y); } class Test { public void showValue(String str) { System.out.println("The value is: " + str); } } public class LambdaExpressionTest extends Test { public static void main(String[] args) { LambdaExpressionTest lambdaObj = new LambdaExpressionTest(); lambdaObj.getResult(); } public void getResult() { TestInterface ref = (x, y) -> { // lambda expression System.out.println("The toString: " + this.toString()); super.showValue("Calling from Lambda"); return x*y; }; System.out.println("Result is: " + ref.calculate(8, 6)); } }
輸出
The toString: LambdaExpressionTest6@87aac27 The value is: Calling from Lambda Result is: 48
廣告