Лямбда-выражения .NET в Java
Недавно я перешел с С# на Java [снова]. Но я плохо пропускаю лямбда-выражения и такие вещи, как IEnumerable.Foreach of С#.
Поэтому я ищу библиотеку выражений лямбда в Java.
Есть ли более лучшие библиотеки, чем LambdaJ?
Кроме того, clojure непосредственно встроен в Java-программы? То есть я могу смешать код clojure в Java-функциях?
Ответы
Ответ 1
Java 8 может поддерживаться lambda. До тех пор вы можете использовать комбинацию анонимных внутренних классов и библиотек, таких как google-guava. Ниже приведены другие библиотеки, которые вы можете посмотреть в
Или лучше взгляните на Scala
Ответ 2
Эквивалентный цикл foreach в Java структурирован таким образом
List<Foo> fooList = // some list containing foos
for (Foo foo : fooList){
// do stuff
}
В Java нет лямбда-выражений, однако, если вы можете подождать, пока Java8 не добавит закрытия. Ближайшим вы можете получить анонимные внутренние классы.
Ответ 3
Библиотека Google Guava содержит классы Function
и Predicate
, которые могут использоваться для эмуляции лямбда-подобных функций. Как упоминает выше kgrad, вы можете создавать анонимные экземпляры каждого из них.
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
Хотя вы можете легко писать такие классы самостоятельно, Guava содержит много вспомогательных методов, которые используют функции и предикаты для выполнения таких действий, как преобразование или фильтрация всех разных типов итераций: http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Iterables.html
Примечание. Я понимаю, что Pangea уже разместил ссылку на Google Guava выше, но я уже начал писать этот пост и думал, что все равно будет полезно предоставить ссылки.