Joel On Softwareの記事を読んで、高階関数を使用して、mapとreduceを使用してコードを大幅に簡素化するというアイデアについて説明しました。彼は、これをJavaで行うのは難しいと述べました。記事: http: //www.joelonsoftware.com/items/2006/08/01.html
以下の記事の例では、配列をループし、配列内の各要素の引数として渡された関数fnを使用しています。
function map(fn, a)
{
for (i = 0; i < a.length; i++)
{
a[i] = fn(a[i]);
}
}
これは、実際には以下のように呼び出されます。
map( function(x){return x*2;}, a );
map( alert, a );
理想的には、配列、または可能であれば任意のタイプのコレクションで機能するマップ関数を作成したいと思います。
私はインターネットで周りを見回していて、このテーマに関するリソースを見つけるのに苦労しています。まず、Javaで無名関数は可能ですか?これを別の方法で行うことは可能ですか?Javaの将来のバージョンで利用できるようになりますか?可能であれば、どうすればよいですか?
これがJavaで不可能な場合、匿名関数はソフトウェアの世界で非常に強力なツールであると想像するので、人々が同じ効果を達成するために使用するある種の「パターン」/手法があると思います。私が見つけた唯一の同様の質問はこれでした:Javaジェネリック-mapのような高階関数を実装することは私にはまったく意味がありません。