一般的には Java-11 に興味がありますが、具体的には JEP:32 Lambda操作変数にvar
宣言を追加する予定です。
この機能の背後にある動機はうまく議論されています ここ 。記事からの次の引用を検討してください。
// #1 - Legal
ITest divide = (@ATest var x, final var y) -> x / y;
/* #2 Modifiers on Old-Style implicit paramaters => Illegal */
ITest divide = (@ATest x, final y) -> x / y;
最終的な修飾子の使用法は私には明らかであり、不変性のベストプラクティスに沿っています。
ただし、注釈についてはよくわかりません。ラムダ暗黙パラメーターに注釈を付けることができることの大きな利点は何ですか?
ラムダ操作変数でアノテーションを使用する事実上の有益な例を提供できますか?意見の問題ではなく、この機能を使用するときに、より読みやすく効率的なコードの実際の例として。
ラムダ暗黙パラメーターに注釈を付けることができることの大きな利点は何ですか?
ラムダステートメント内でのアノテーションの使用法は、非ラムダステートメントの他の属性と同様である必要があります。これは、以下を利用することである可能性があります。
JEP-32自体に記載されているユースケース(それはあなたが楽しみにしていることです)-
_(@Nonnull var x, @Nullable var y) -> x.process(y)
_
ここで、ライブラリは注釈を使用して、x
およびy
の値チェックを決定できます。その中で、x.process(y)
は確かにNullPointerExceptionをスローできないことを知っていますx
の明示的なnullチェックを行わずにラムダパラメーター。
特に、これは、暗黙的に型指定されたラムダ式の仮パラメーターにvar
を許可する均一性をもたらす利点の1つです。