我正在使用JDK9的jshell。
我刚刚创建了一个final变量并为其赋值。 在下一行我刚修改了这个值。令我惊讶的是,修改最终变量时没有错误。
以下是代码段:
jshell> final int r = 0;
| Warning:
| Modifier 'final' not permitted in top-level declarations, ignored
| final int r = 0;
| ^---^
r ==> 0
jshell> r = 1;
r ==> 1
jshell> System.out.println("r = "+r)
r = 1
这是jshell的预期吗?还是有其他方法可以在jshell中使用最终变量?
答案 0 :(得分:6)
虽然不应该在顶层创建最终变量。但我想没有什么难以限制这种用法。
周围的文档修饰符
this.router.navigate([newStep.StepView])
,public
,protected
,private
和static
不是 允许在操作级别声明中,被忽略并带有警告。同步,本机,抽象和默认的顶级方法不是 允许并且是错误。
如果声明的先前定义是 覆盖然后会有一个事件显示其状态已更改为 OVERWRITTEN,这不会发生丢弃,拒绝或已经发生 覆盖声明。
当您在详细模式下执行final
时,上述警告非常明显,如下所示: