Лямбда-выражения .NET в Java - PullRequest
10 голосов
/ 23 января 2011

Я недавно перешел с C # на Java [снова].Но я очень скучаю по лямбда-выражениям и прочим вещам, таким как IEnumerable.Поэтому я ищу библиотеку лямбда-выражений в Java.

Есть ли лучшие библиотеки, чем LambdaJ ?

Также является ли clojure непосредственно встроенным в программах Java?То есть я могу смешивать код clojure в функциях Java?

Ответы [ 3 ]

13 голосов
/ 23 января 2011

Java 8 может иметь встроенную поддержку лямбды.До этого вы можете использовать комбинацию анонимных внутренних классов и библиотек, таких как google-guava .Ниже приведены другие библиотеки, в которые вы можете обратиться

Или лучше взгляните на Scala

3 голосов
/ 23 января 2011

Библиотека Google Guava содержит классы Function и Predicate, которые можно использовать для эмуляции лямбда-подобных функций.Как упоминалось выше, вы можете создавать анонимные экземпляры каждого из них.

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

3 голосов
/ 23 января 2011

Эквивалентный цикл foreach в Java структурирован следующим образом

List<Foo> fooList = // some list containing foos
for (Foo foo : fooList){
    // do stuff
}

В Java нет лямбда-выражений, однако, если вы можете подождать, пока Java8 не добавит замыкания. Самое близкое, что вы можете получить, это анонимные внутренние классы .

...