jshell是java 9中引入的一个命令行工具,它是java第一个官方repl工具,用于创建一个简单的编程环境,读取用户的输入、对其进行评估并打印结果。
类外部的声明或接口(以及类和接口本身的声明)是根据以下规则创建的。
外部声明规则:
1) 可以忽略public、protected和private等访问修饰符。所有其他片段都可以访问所有声明片段。
jshell> private int i = 10;i ==> 10jshell> 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();| ^------^
以上就是java 9中jshell的外部声明规则是什么?的详细内容。