Lambda -Ausdrücke von .NET in Java
Frage
Ich bin kürzlich von C# nach Java [erneut] gezogen. Aber ich vermisse Lambda -Ausdrücke und Dinge wie iEnumerable. Also suche ich nach einer Lambda Expressionsbibliothek in Java.
Gibt es bessere Bibliotheken als Lambdaj?
Ist auch Clojure in Java -Programmen direkt eingestuft? Kann ich den Clojure -Code in Java -Funktionen mischen?
Lösung
Java 8 Könnte Lambda nativ unterstützen. Bis dahin können Sie eine Kombination aus anonymen inneren Klassen und Bibliotheken wie verwenden Google-Guava. Nachfolgend finden Sie andere Bibliotheken, in die Sie prüfen können
- http://commons.apache.org/collections/
- http://functionaljava.org/
- http://functionalj.sourceforge.net/
- http://www.agical.com/jambda/
Oder besser ansehen Scala
Andere Tipps
Das Äquivalent foreach -Schleifen in Java ist so strukturiert
List<Foo> fooList = // some list containing foos
for (Foo foo : fooList){
// do stuff
}
Es gibt keine Lambda -Ausdrücke in Java. Wenn Sie jedoch bis Java8 warten können, fügt sie Schließungen hinzu. Das nächste, was Sie bekommen können, sind Anonyme innere Klassen.
Die Google Guava -Bibliothek enthält Function
und Predicate
Klassen, mit denen Lambda-ähnliche Funktionen nachgeahmt werden können. Wie Kgrad oben erwähnt, können Sie anonyme Instanzen von jedem erstellen.
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/function.html
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/predicate.html
Obwohl Sie leicht Klassen wie diese selbst schreiben könnten, enthält Guava viele Helfermethoden, die Funktionen und Prädikate für das Tauchen oder Filtern aller verschiedenen Arten von Iterablen verwenden: http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/iterables.html
Hinweis: Mir ist klar, dass Pangea oben bereits einen Link zu Google Guava gepostet hat, aber ich hatte bereits angefangen, diesen Beitrag zu schreiben, und dachte, es wäre immer noch nützlich, die Links bereitzustellen.