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


JShellJava 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) 不允许使用修饰符 defaultsynchronized

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();
|   ^------^

更新于: 2020年4月16日

85 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告