29

クロージャは、来年の夏頃にリリースされる予定の次の Java 標準で導入される可能性があると聞いています。

この構文はどのようになりますか?

Java でのクロージャの導入は、Java 5 でのジェネリックよりも大きな変更であるとどこかで読みました。これは本当ですか? 長所と短所?

(今では、クロージャが次の Java リリースに含まれないことが確実にわかっています)

また

編集: http://puredanger.com/tech/2009/11/18/closures-after-all/ :D

edit2: JDK7 の再考: http://blogs.oracle.com/mr/entry/rethinking_jdk7

edit3: 失う瞬間はありません!: http://blogs.oracle.com/mr/entry/quartet

4

9 に答える 9

17

http://www.javac.info/をご覧ください。

これは次のようになります。

boolean even = { int x => x % 2 == 0 }.invoke(15);

ビットは{ int x => x % 2 == 0 }クロージャーです。

于 2008-10-24T13:49:35.293 に答える
13

それは本当に何が導入されるか、そして実際に導入されるかどうかにかかっています。さまざまなサイズのクロージャーの提案が多数あります。

提案とさまざまなブログ投稿については、Alex Miller の Java 7 ページを参照してください。

個人的にはクロージャを見たいと思っています - それらは美しく、信じられないほど役に立ちます- しかし、いくつかの提案はかなり難しいのではないかと心配しています.

于 2008-10-24T13:50:08.507 に答える
11

2009 年 11 月に、この問題に関する驚くべき方向転換があり、Java 7 に閉鎖が追加されることになりました。

アップデート

Java 7 のクロージャ (AKA ラムダ式) は発生しませんでした。これらは、2014 年の Java 8 の最初のリリースで最終的に追加されました。

于 2009-05-04T23:25:40.223 に答える
4

残念ながら、Java 7 にはクロージャがありません。Java でクロージャを持つ軽量なソリューションを探している場合は、lambdaj プロジェクトをチェックしてください。

http://code.google.com/p/lambdaj/

于 2009-09-12T07:34:08.513 に答える
3

これは Java 7 の機能ですhttp://tech.puredanger.com/java7/#switch例は非常に便利です。

于 2008-10-24T13:54:48.793 に答える
3

「関数型」は実際には提案の下の型であることに注意してください。

{int => boolean} evaluateInt;    //declare variable of "function" type
evaluateInt = {int x => x % 2 }; //assignment
于 2008-10-24T15:21:53.737 に答える
2

型推論の種類がない場合、クロージャは厄介に冗長になります... :(

于 2010-05-10T23:19:21.783 に答える
2

最終的にどの構文を使用するかについては、まだ多くの議論があると思います。そのすべてのために、これがJava 7に組み込まれた場合、私は実際にはかなり驚くでしょう.

于 2008-10-24T17:54:33.473 に答える
1

クロージャにはいくつかの深刻なエッジケースがあります。クロージャーはジェネリックよりもはるかに重要な変更であり、ジェネリックにはまだ多くのヘアリーエッジケースがあります。たとえば、Javaコレクションライブラリは、警告なしに書き込み/コンパイルすることはできません。

于 2009-05-08T20:08:21.000 に答える