Java unterstützt keine echten Abschlüsse, sie können jedoch durch anonyme innere Klassen simuliert werden. Abschlüsse in anonymen inneren Klassen können auf externe Variablen zugreifen, selbst wenn die Funktion, die sie erstellt hat, beendet wurde. Externe Variablen können jedoch nicht außerhalb der Funktion deklariert oder geändert werden, und Lambda-Ausdrücke können externe Variablen nicht direkt erfassen.
Ein Abschluss ist eine Funktion, die Zugriff auf Variablen hat, die in der Funktion definiert sind, die ihn erstellt hat. Der Abschluss kann weiterhin auf diese Variablen zugreifen, auch wenn die Ausführung der Funktion, die ihn erstellt hat, abgeschlossen ist.
Java unterstützt keine echten Abschlüsse. Durch die Verwendung anonymer innerer Klassen können wir jedoch das Verhalten von Abschlüssen simulieren.
Betrachten Sie den folgenden Codeausschnitt:
public class LambdaClosure { public static void main(String[] args) { int x = 10; Runnable closure = () -> System.out.println(x); // 调用闭包 closure.run(); } }
In diesem Fall:
x
ist eine lokale Variable, die in main()
definiert ist Methode Mitte. x
是一个局部变量,它被定义在 main()
方法中。Runnable
被用来创建闭包。closure
访问了外部变量 x
,即使 main()
Runnable
wird zum Erstellen von Abschlüssen verwendet. closure
greift auf die externe Variable x
zu, obwohl die Methode main()
beendet wurde. Externe Variablen können in anonymen inneren Klassen erfasst werden.
Das obige ist der detaillierte Inhalt vonUnterstützen Java-Funktionen Schließungen? Wie wird die Schließung umgesetzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!