gpt4 book ai didi

java - uni-catch 的异常参数可能是有效的最终参数?

转载 作者:行者123 更新时间:2023-12-01 17:14:32 29 4
gpt4 key购买 nike

来自The Java® Language Specification:的声明

An exception parameter of a uni-catch clause is never implicitlydeclared final, but may be effectively final.

这里可能意味着什么。请举例说明。

最佳答案

JLS8 在 4.12.4 节中说明:

A local variable or a method, constructor, lambda, or exception parameter is effectively final if it is not declared final but it never occurs as the left hand operand of an assignment operator (§15.26) or as the operand of a prefix or postfix increment or decrement operator (§15.14, §15.15).

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

try {
throw new RuntimeException("foobar");
} catch (RuntimeException e) {
Runnable r = () -> { System.out.println(e); };
r.run();
}

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

try {
throw new RuntimeException("foo");
} catch (RuntimeException e) {
e = new RuntimeException("bar", e);
Runnable r = () -> { System.out.println(e); }; // ERRROR
r.run();
}

关于java - uni-catch 的异常参数可能是有效的最终参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22732039/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com