Java 9中JShell中的外部声明的规则是什么?

JShell Java 9中引入的命令行工具,它是Java的第一个官方REPL 工具,用于创建一个简单的编程环境,该环境可以读取用户的输入,对其进行评估并打印结果。

 类接口 外部 的声明(以及类和接口本身的声明)是根据以下规则创建的。

外部声明规则:

1)可以忽略访问修饰符,例如public,protectedprivate 。所有其他声明片段均可访问所有声明片段。

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)不允许使用修改器的默认设置 同步 设置。

jshell> synchronized void method() {}
|   Error:
|   Modifier 'synchronized' not permitted in top-level declarations
|   synchronized void method() {}
|   ^----------^

5)仅在类中允许使用修饰符摘要 

jshell> abstract void method();
|   Error:
|   Modifier 'abstract' not permitted in top-level declarations
|   abstract void method();
|   ^------^