Лямбда-выражения .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 выше, но я уже начал писать этот пост и думал, что все равно будет полезно предоставить ссылки.