Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 uni catch的异常参数可能是最终的?_Java_Javadoc_Java 8 - Fatal编程技术网

Java uni catch的异常参数可能是最终的?

Java uni catch的异常参数可能是最终的?,java,javadoc,java-8,Java,Javadoc,Java 8,来自 uni catch子句的异常参数从不隐式 已宣布为最终结果,但实际上可能是最终结果 这里可能暗示什么。请举例说明。JLS8在第节中说明: 如果局部变量或方法、构造函数、lambda或异常参数未声明为final,但从未作为赋值运算符§15.26的左操作数或前缀或后缀递增或递减运算符§15.14、§15.15的操作数出现,则该局部变量或方法、构造函数、lambda或异常参数实际上是final 在下面的示例中,变量e是有效的final。这意味着它可以用于lambda表达式和匿名内部类: 在下面的

来自

uni catch子句的异常参数从不隐式 已宣布为最终结果,但实际上可能是最终结果


这里可能暗示什么。请举例说明。

JLS8在第节中说明:

如果局部变量或方法、构造函数、lambda或异常参数未声明为final,但从未作为赋值运算符§15.26的左操作数或前缀或后缀递增或递减运算符§15.14、§15.15的操作数出现,则该局部变量或方法、构造函数、lambda或异常参数实际上是final

在下面的示例中,变量e是有效的final。这意味着它可以用于lambda表达式和匿名内部类:

在下面的示例中,变量e不是有效的final,因为有一个赋值给该变量。这意味着,它不能在lambda表达式和匿名内部类中使用:


JLS8在第节中说明:

如果局部变量或方法、构造函数、lambda或异常参数未声明为final,但从未作为赋值运算符§15.26的左操作数或前缀或后缀递增或递减运算符§15.14、§15.15的操作数出现,则该局部变量或方法、构造函数、lambda或异常参数实际上是final

在下面的示例中,变量e是有效的final。这意味着它可以用于lambda表达式和匿名内部类:

在下面的示例中,变量e不是有效的final,因为有一个赋值给该变量。这意味着,它不能在lambda表达式和匿名内部类中使用:


我想你应该看看effectivefinal的定义。@SotiriosDelimanolis我在谷歌上发现,没有改变的变量是effectivefinal,但当我阅读我在上面找到的Java文档时,我被弄糊涂了,异常参数可能是unicatch块的effectivefinal。我无法想象这意味着什么。在任何参数都可能是有效最终的意义上,它可能是有效最终的。我想你应该看看有效最终的定义。@SotiriosDelimanolis I google发现没有改变的变量实际上是最终的,但当我阅读我发现上面语句的Java文档时,我感到困惑,异常参数可能实际上是uni catch块的最终参数。我无法想象这意味着什么。它可能实际上是最终的,因为任何参数都可能是最终的。
try {
    throw new RuntimeException("foobar");
} catch (RuntimeException e) {
    Runnable r = () -> { System.out.println(e); };
    r.run();
}
try {
    throw new RuntimeException("foo");
} catch (RuntimeException e) {
    e = new RuntimeException("bar", e);
    Runnable r = () -> { System.out.println(e); }; // ERRROR
    r.run();
}