Kay*_*ayV 6 final access-modifiers java-9 jshell
我正在使用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
Run Code Online (Sandbox Code Playgroud)
这是jshell的预期吗?或者还有其他一些方法可以在jshell中使用最终变量?
虽然不应该在顶层创建最终变量.但我想没有什么难以限制这种用法.
从周围的文档 JShell.eval
修饰符
public,protected,private,static,并且final不允许在OP级的声明,并发出警告忽略.不允许使用同步,本机,抽象和默认的顶级方法,这些方法都是错误的.
如果覆盖了声明的先前定义,则会有一个事件显示其状态已更改为OVERWRITTEN,这对于删除,拒绝或已经覆盖的声明不会发生.
当您jshell以详细模式执行时,上述警告非常明显,如下所示:
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |