最近、C#からJavaに移行しました[再び]。しかし、ラムダ式やIEnumerable.Foreach of C#のようなものをひどく見逃しています。だから私はJavaでラムダ式ライブラリを探しています。
LambdaJよりも優れたライブラリはありますか?
また、clojureはJavaプログラムで直接インライン化できませんか?つまり、Java関数にclojureコードを混在させることはできますか?
Java8はラムダをネイティブにサポートしている可能性があります。それまでは、匿名の内部クラスとgoogle-guavaのようなライブラリを組み合わせて使用できます。以下は、調べることができる他のライブラリです
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
注:パンゲアはすでに上記のGoogle Guavaへのリンクを投稿していることを認識していますが、私はすでにこの投稿を書き始めており、リンクを提供することは依然として有用であると考えました。
Javaの同等のforeachループは次のように構成されています
List<Foo> fooList = // some list containing foos
for (Foo foo : fooList){
// do stuff
}
Javaにはラムダ式はありませんが、Java8まで待つことができれば、クロージャーが追加されます。あなたが得ることができる最も近いものは匿名の内部クラスです。