質問
私は最近、C#からJavaに移動しました[再び]。しかし、私はラムダの表現とIenumerableのようなものをひどく見逃しています。だから私はJavaのLambda Expression Libraryを探しています。
より良いライブラリはありますか ラムダジ?
また、Javaプログラムでは、Clojureは直接インラインできますか? Java関数のClojureコードを混ぜることはできますか?
解決
Java 8 ラムダがネイティブにサポートしている可能性があります。それまでは、匿名の内部クラスとライブラリの組み合わせを使用できます。 Google-Guava. 。以下は、調べることができる他のライブラリです
- http://commons.apache.org/collections/
- http://functionaljava.org/
- http://functionalj.sourceforge.net/
- http://www.agical.com/jambda/
または見てください スカラ
他のヒント
Javaの同等のforeachループはこのように構成されています
List<Foo> fooList = // some list containing foos
for (Foo foo : fooList){
// do stuff
}
JavaにはLambda式はありませんが、Java8まで待つことができれば、閉鎖を追加しています。あなたが得ることができる最も近いのはです 匿名の内部クラス.
Google Guavaライブラリには含まれています Function
と Predicate
ラムダのような機能をエミュレートするために使用できるクラス。上記のKgradが言及しているように、それぞれの匿名インスタンスを作成できます。
http://guava-libraries.googlecode.com/svn/trunk/javadoc/google/common/base/function.html
http://guava-libraries.googlecode.com/svn/trunk/javadoc/google/common/base/predicate.html
このようなクラスを自分で簡単に書くことはできますが、Guavaには、さまざまな種類の反復可能性を変換したりフィルタリングするなどの機能と述語を利用する多くのヘルパーメソッドが含まれています。 http://guava-libraries.googlecode.com/svn/trunk/javadoc/google/common/collect/iterables.html
注:Pangeaはすでに上記のGoogle Guavaへのリンクを既に投稿していることを認識していますが、すでにこの投稿を書き始めていて、リンクを提供することはまだ役立つと考えていました。