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

更新時間:2020-Jul-10

446 次瀏覽

開啟你的職業

完成課程來獲取認證

開始
廣告