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