Heim  >  Artikel  >  Java  >  Vergleichen und kontrastieren Sie Java-Abschlüsse und anonyme Funktionen

Vergleichen und kontrastieren Sie Java-Abschlüsse und anonyme Funktionen

WBOY
WBOYOriginal
2024-05-04 09:21:02974Durchsuche

Sowohl Abschlüsse als auch anonyme Funktionen in Java sind anonyme innere Klassen, aber Abschlüsse können den Status über ihre Erstellungsumgebung hinaus speichern, während anonyme Funktionen nur eine Operation ausführen und auf ihre Erstellungsumgebung beschränkt sind.

Java 闭包与匿名函数之间的比较和对照

Abschlüsse und anonyme Funktionen in Java

Überblick

Abschlüsse und anonyme Funktionen in Java sind anonyme innere Klassen, die den Zugriff auf Variablen in der Umgebung ermöglichen, in der sie erstellt werden, aber zwischen den beiden gibt es feine Unterschiede.

Abschlüsse

  • Ein Abschluss ist eine anonyme innere Klasse mit privaten Variablen und speicherbarem Zustand.
  • Ein Abschluss kann Variablen aus der Umgebung enthalten, in der er erstellt wird, und einen dauerhaften Zugriff darauf ermöglichen.
  • Abschlüsse als Objekte, Eigenschaften oder Methoden werden zurückgegeben oder übergeben, wodurch die Lebensdauer der Umgebung, in der sie erstellt werden, verlängert wird.

Anonyme Funktionen

  • Anonyme Funktionen sind anonyme innere Klassen, die Operationen nur einmal ausführen.
  • Anonyme Funktionen sind im Wesentlichen „einmalige“ Funktionen , Weil es keinen Status hat
  • Anonyme Funktionen werden häufig als Lambda-Ausdrücke verwendet, um Code prägnanter zu schreiben

Vergleichstabellen

Funktionen Verschlüsse Anonyme Funktionen
Staat Status speichern, kann geändert werden Kein Status
Bereich außerhalb seiner Erstellungsumgebung, solange die Referenz vorhanden ist beschränkt auf seine Erstellungsumgebung
Instantiierung Neuen Operator verwenden durch Lambda ausgedrückt Formel
Zweck Verzögerte Initialisierung, Zustandsverwaltung Umgang mit einmaligen Aufgaben, Sorge um Vereinfachung

Praktischer Fall

Abschlussbeispiel

// 用于延迟初始化的闭包
public static Supplier<String> createLazySupplier() {
    String name = "Alice";
    return () -> name;
}

Anonymes Funktionsbeispiel

// 用于排序的匿名函数
Arrays.sort(array, (a, b) -> Integer.compare(a, b));

Fazit

Abschlüsse und anonyme Funktionen sind beides nützliche Werkzeuge in Java, die die Erstellung von flexiblem und effizientem Code ermöglichen. Welches verwendet werden soll, hängt von den für einen bestimmten Anwendungsfall erforderlichen Funktionen ab.

Das obige ist der detaillierte Inhalt vonVergleichen und kontrastieren Sie Java-Abschlüsse und anonyme Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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