Ran*_*itz 14 java lambda annotations var java-11
我一般对Java-11感到好奇,但特别是JEP:323计划将var声明添加到Lambda操作变量.
这个功能背后的动机在这里很好地讨论.请考虑以下文章中的引用:
// #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;
Run Code Online (Sandbox Code Playgroud)
最终修饰符的使用对我来说很清楚,并且符合不变性最佳实践.
但是,我不确定注释.能够注释lambda隐式参数有什么好处?
你能提供一个在lambda操作变量上使用注释的事实上的有益例子吗?这不是一个意见问题,而是作为使用此功能时更具可读性或效率的代码的实际示例.
能够注释lambda隐式参数有什么好处?
lambda语句中的注释的使用应该类似于非lambda语句中的任何其他属性.这可以是利用:
JEP-323本身所述的用例(重申自己不确定这是否是您所期待的) -
(@Nonnull var x, @Nullable var y) -> x.process(y)
Run Code Online (Sandbox Code Playgroud)
其中注释可以由库用于确定值检查x和y.在那里,你知道x.process(y)当然不能抛出NullPointerException ,甚至不用x现在的显式null检查,这与任何其他显式注释的非lambda参数相同.
值得注意的是,这是引入允许var隐式类型的lambda表达式的形式参数的一致性的好处之一.
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |