Java中.NET的Lambda表达式

Java中.NET的Lambda表达式,java,lambda,clojure,lambdaj,Java,Lambda,Clojure,Lambdaj,我最近[再次]从C#转到Java。但我非常想念lambda表达式和类似于IEnumerable.Foreach of C#的东西。 因此,我正在寻找Java中的lambda表达式库 有比这更好的图书馆吗 clojure在Java程序中也可以直接内联吗?也就是说,我可以在Java函数中混合clojure代码吗?Java中等效的foreach循环的结构如下 List<Foo> fooList = // some list containing foos for (Foo foo : fo

我最近[再次]从C#转到Java。但我非常想念lambda表达式和类似于IEnumerable.Foreach of C#的东西。 因此,我正在寻找Java中的lambda表达式库

有比这更好的图书馆吗


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

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

List<Foo> fooList = // some list containing foos
for (Foo foo : fooList){
    // do stuff
}
List-doulist=//一些包含foos的列表
对于(Foo-Foo:傻瓜){
//做事
}
Java中没有lambda表达式,但是如果您可以等到Java8,它们将添加闭包。您可以获得的最接近的是。

可能在本机上支持lambda。在此之前,您可以使用匿名内部类和库的组合,如。下面是您可以查看的其他库


或者最好看看Google Guava库包含的
函数
谓词
类可以用来模拟类似lambda的功能。正如kgrad上面提到的,您可以创建每个实例的匿名实例


尽管您可以自己轻松编写这样的类,但Guava包含许多辅助方法,这些方法利用函数和谓词进行转换或过滤所有不同类型的iterables:


注意:我意识到Pangea已经在上面发布了一个指向Google Guava的链接,但我已经开始写这篇文章,并且认为提供链接仍然会很有用。

有趣……C#甚至没有附带
IEnumerable.Foreach
@Gabe-关于学究的观点你是对的。我指的是采取行动的收集处理方法。List.Foreach/Array.Foreach或Ienumerable.All等。谢谢-但我不是指C#的Foreach关键字。我的意思是一些收集。ForEach(结束)。虽然答案的后面部分很有用,但是a。内部类是冗长的。我不明白一件事,Lambda表达式是微软的专利。Java使用它的机会有多大?当我读到这篇文章时,我笑了——然后发现:。。。C#与第一种使用lambda表达式的语言不太接近。这项专利一定是那些愚蠢的“我不想因为做了每个人都用过的事情而被起诉”专利之一。