Zugriff auf Variablen im enthaltenen Bereich
- Ein Lambda-Ausdruck kann auf Folgendes zugreifen:
- Instanzvariablen der enthaltenden Klasse.
- Statische Variablen, die in der externen Klasse definiert sind.
- Der Parameter this, der auf die aufrufende Instanz der externen Klasse verweist.
Zugriff auf lokale Variablen
- Bei Verwendung externer lokaler Bereichsvariablen:
- Die lokale Variable muss effektiv endgültig sein.
- Effektiv endgültig: Eine Variable, deren Wert sich nach der Zuweisung nicht ändert.
- Muss nicht explizit als endgültig deklariert werden.
- Das Ändern der lokalen Variablen (innerhalb oder außerhalb des Lambda) macht ihre Erfassung ungültig.
Änderungsbeschränkung
Kann nicht geändert werden:
- Lokale Variablen, die im Lambda-Ausdruck erfasst werden.
- Durch das Ändern dieser Variablen wird ihr effektiv endgültiger Status entfernt.
Änderung von Instanzvariablen
Ein Lambda-Ausdruck kann:
- Instanzvariablen der aufrufenden Klasse verwenden und ändern.
- Es gibt keine Einschränkung hinsichtlich des „endgültigen“ Status für Instanzvariablen.
Beispiel: Lokale Variable aus externem Bereich erfassen
Code:
interface MyFunc { int func(int n); } class VarCapture { public static void main(String args[]) { // Variável local que pode ser capturada int num = 10; MyFunc myLambda = (n) -> { // Uso correto da variável num int v = num + n; // A instrução abaixo é inválida porque tenta modificar num // num++; return v; }; // Usando a expressão lambda System.out.println(myLambda.func(8)); // Exibe: 18 // Modificar num aqui também causaria erro // num = 9; } }
Erklärung:
Num Capture:
Die Nummer ist effektiv endgültig, da sie nach der ersten Zuweisung nicht geändert wird.
Lambda kann auf num zugreifen, es aber nicht ändern.Ausführung:
myLambda.func(8) gibt 18 zurück, weil:
num (10) wird zum Parameter n (8) addiert, was 18 ergibt.Fehler aufgrund einer Änderung:
Das Auskommentieren von num oder num = 9 würde die Erfassung ungültig machen und einen Kompilierungsfehler verursachen.Hinweis:
Wichtig: Instanz- oder statische Variablen können innerhalb von Lambda-Ausdrücken ohne Einschränkungen verwendet und geändert werden.
Einschränkungen gelten nur für lokale Variablen mit externem Bereich.
Das obige ist der detaillierte Inhalt vonLambda-Ausdrücke und Erfassungsvariablen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Dreamweaver Mac
Visuelle Webentwicklungstools

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)