10

我最近 [再次] 从 C# 迁移到 Java。但我非常想念 lambda 表达式和 C# 的 IEnumerable.Foreach 之类的东西。所以我正在寻找Java中的lambda表达式库。

有比LambdaJ更好的库吗?

clojure 在 Java 程序中也可以直接内联吗?那就是我可以在 Java 函数中混合 clojure 代码吗?

4

3 回答 3

13

Java 8可能原生支持 lambda。在此之前,您可以结合使用匿名内部类和google-guava等库。以下是您可以查看的其他库

或者更好地看看Scala

于 2011-01-23T18:48:43.660 回答
3

Google Guava 库包含可用于模拟类似 lambda 的功能的类FunctionPredicate正如上面提到的 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 的链接,但我已经开始写这篇文章,并认为提供这些链接仍然有用。

于 2011-01-23T18:53:15.797 回答
3

Java中等价的foreach循环结构如下

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

Java 中没有 lambda 表达式,但是如果您可以等到 Java8,它们将添加闭包。您可以获得的最接近的是匿名内部类

于 2011-01-23T18:41:45.697 回答