Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 11:Lambda参数的局部变量语法-应用程序_Java_Lambda_Annotations_Var_Java 11 - Fatal编程技术网

Java 11:Lambda参数的局部变量语法-应用程序

Java 11:Lambda参数的局部变量语法-应用程序,java,lambda,annotations,var,java-11,Java,Lambda,Annotations,Var,Java 11,我对一般情况很好奇,但具体是哪个计划将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 /

我对一般情况很好奇,但具体是哪个计划将
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;
最终修饰符的用法对我来说很清楚,并且符合不变性最佳实践

但是,我不确定注释是否正确。能够注释lambda隐式参数的最大好处是什么

您能否提供一个事实上有用的示例,说明如何在lambda操作变量上使用注释?这不是一个观点,而是一个实际的代码示例,当使用此功能时,它更具可读性或效率

能够注释lambda隐式参数的最大好处是什么

lambda语句中注释的用法应该类似于非lambda语句中的任何其他属性。这可以利用:

  • 在运行时反射并推断有关注释对象的一些信息
  • 还可以在编译时描述行为,如生成的源代码或其他工具提示
本身中所述的用例(重申我自己不确定这是否是您所期待的)——

其中,库可以使用注释来确定对
x
y
的值检查。在这一点上,您知道
x.process(y)
当然不能抛出NullPointerException,甚至现在不为
x
进行显式空检查,这与任何其他显式注释的非lambda参数相同

值得注意的是,这是允许隐式类型lambda表达式的形式参数使用
var
的统一性带来的好处之一

(@Nonnull var x, @Nullable var y) -> x.process(y)