Java 9 中 JShell 的外部声明规则是什么?
JShell 是 Java 9 中引入的 命令行工具,它是 Java 第一个正式的 REPL 工具,用于创建简单的编程环境,读取用户的输入,对其进行评估,并打印结果。
类 或 接口 之外的声明(以及类和接口本身的声明)是在以下规则下创建的。
外部声明规则
1) 可以忽略访问修饰符,如 public、protected 和 private。所有声明片段都可以被其他所有片段访问。
jshell> private int i = 10; i ==> 10 jshell> System.out.println(i); 10
2) 可以忽略修饰符 final。允许更改和继承。
jshell> final class A {void m() {} } | Warning: | Modifier 'final' not permitted in top-level declarations, ignored | final class A {void m() {} } | ^---^ | created class A
3) 可以忽略修饰符 static,因为没有容器类。
jshell> static char letter = 'A; | Warning: | Modifier 'static' not permitted in top-level declarations, ignored | static char letter = 'A'; | ^----^ letter ==> 'A'
4) 不允许使用修饰符 default 和 synchronized。
jshell> synchronized void method() {} | Error: | Modifier 'synchronized' not permitted in top-level declarations | synchronized void method() {} | ^----------^
5) 修饰符 abstract 仅允许在类中使用。
jshell> abstract void method(); | Error: | Modifier 'abstract' not permitted in top-level declarations | abstract void method(); | ^------^
广告