Heim > Java > javaLernprogramm > Unterstützen Java-Funktionen Schließungen? Wie wird die Schließung umgesetzt?

Unterstützen Java-Funktionen Schließungen? Wie wird die Schließung umgesetzt?

PHPz
Freigeben: 2024-05-02 13:36:02
Original
1006 Leute haben es durchsucht

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.

Java 函数是否支持闭包?如何实现闭包?

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();
    }
}
Nach dem Login kopieren

In diesem Fall:

  • x ist eine lokale Variable, die in main() 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.
🎜Der Lambda-Ausdruck kann externe Variablen nicht direkt erfassen und es müssen anonyme innere Klassen verwendet 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage