Was ist Schließung? Es soll in Java 7 enthalten sein. (Verschlüsse wurden für die Aufnahme in Java 7 besprochen, aber am Ende wurden sie nicht aufgenommen. -Ed) Kann mir jemand bitte einige zuverlässige Referenzen geben, von denen ich Informationen über Verschlüsse erhalten kann?
105
Ein Abschluss ist ein Codeblock, auf den beim Zugriff auf die Variablen des umschließenden Bereichs verwiesen (und der weitergegeben werden kann).
Seit Java 1.1 hat die anonyme innere Klasse diese Funktion sehr ausführlich bereitgestellt. Sie haben auch die Einschränkung, nur
final
lokale Variablen verwenden (und definitiv zuweisen) zu können. (Beachten Sie, dass auch nichtfinal
lokale Variablen im Gültigkeitsbereich sind, aber nicht verwendet werden können.)Java SE 8 soll eine präzisere Version für Schnittstellen mit einer Methode * haben, die als "Lambdas" bezeichnet wird. Lambdas haben fast die gleichen Einschränkungen wie anonyme innere Klassen, obwohl einige Details zufällig variieren.
Lambdas werden im Rahmen des Projekts Lambda und JSR 335 entwickelt .
* Ursprünglich war das Design flexibler und erlaubte SAM-Typen (Single Abstract Methods). Leider ist das neue Design weniger flexibel, versucht jedoch zu rechtfertigen, die Implementierung innerhalb von Schnittstellen zuzulassen.
quelle
Laut Tom Hawtin
Jetzt versuche ich, das JavaScript-Schließungsbeispiel auf Wikipedia mit einer " geraden " Übersetzung nach Java zu emulieren , in der Hoffnung, nützlich zu sein:
Nun der Java-Teil: Function1 ist eine "Functor" -Schnittstelle mit Arity 1 (ein Argument). Closure ist die Klasse, die die Funktion1 implementiert, einen konkreten Funktor, der als Funktion fungiert (int -> int). In der main () -Methode instanziiere ich foo einfach als Closure-Objekt und repliziere die Aufrufe aus dem JavaScript-Beispiel. Die IntBox-Klasse ist nur ein einfacher Container. Sie verhält sich wie ein Array von 1 int:
Es druckt:
quelle
Auf dieser Wiki-Seite finden Sie eine Definition der Schließung.
Und diese Seite zum Schließen in Java 8: http://mail.openjdk.java.net/pipermail/lambda-dev/2011-September/003936.html
Schauen Sie sich auch diese Fragen und Antworten an : Closures in Java 7
quelle
Java Closures werden Teil von J2SE 8 sein und sollen Ende 2012 veröffentlicht werden.
Die Unterstützung für Java 8-Abschlüsse umfasst das Konzept von Lambda-Ausdrücken, Methodenreferenz, Konstruktorreferenz und Standardmethoden.
Weitere Informationen und Arbeitsbeispiele hierfür finden Sie unter: http://amitrp.blogspot.in/2012/08/at-first-sight-with-closures-in-java.html
quelle
Ja, Closure (Lambda Expressions) ist die neue Funktion mit der kommenden Java SE 8-Version. Weitere Informationen hierzu erhalten Sie über den folgenden Link: http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
quelle
Eine Abschlussimplementierung für Java 5, 6 und 7
http://mseifed.blogspot.se/2012/09/bringing-closures-to-java-5-6-and-7.html
Es enthält alles, was man sich wünschen kann ...
quelle