


Unterstützen Java-Funktionen Schließungen? Wie wird die Schließung umgesetzt?
May 02, 2024 pm 01:36 PMJava 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.
Abschlüsse in Java-Funktionen
Einführung in Abschlüsse
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.
Abschlüsse in Java implementieren
Java unterstützt keine echten Abschlüsse. Durch die Verwendung anonymer innerer Klassen können wir jedoch das Verhalten von Abschlüssen simulieren.
Praktischer Fall
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 inmain()
definiert ist Methode Mitte.x
是一个局部变量,它被定义在main()
方法中。 - 匿名内部类
Runnable
被用来创建闭包。 - 闭包
closure
访问了外部变量x
,即使main()
Die anonyme innere Klasse
Runnable
wird zum Erstellen von Abschlüssen verwendet. Der Abschluss closure
greift auf die externe Variable x
zu, obwohl die Methode main()
beendet wurde.
Vorteile und Einschränkungen - Zu den Vorteilen von Spottverschlüssen gehören:
- Es ermöglicht bei Bedarf den Zugriff auf externe Variablen.
Externe Variablen können in anonymen inneren Klassen erfasst werden.
- Die Einschränkungen umfassen:
- Externe Variablen können nicht außerhalb der Funktion deklariert oder geändert 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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Brechen oder aus Java 8 Stream foreach zurückkehren?
