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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP