编辑片段
JShell 使用的基本代码单元是片段或源条目。每次声明局部变量或定义本地方法或类时,都会创建一个片段,其名称是变量/ method / class 的标识符。你可以随时编辑使用/edit
命令创建的代码段。例如,假设我使用单个方法 bar
创建了类 Foo
:
jshell> class Foo {
...> void bar() {
...> }
...> }
现在,我想填写我方法的主体。我可以编辑它,而不是重写整个类:
jshell> /edit Foo
默认情况下,会弹出一个 swing 编辑器,其中包含最基本的功能。但是,你可以更改 JShell 使用的编辑器:
jshell> /set editor emacs
jshell> /set editor vi
jshell> /set editor nano
jshell> /set editor -default
请注意,如果**新版本的代码段包含任何语法错误,则可能无法保存。**同样,只有在原始声明/定义在语法上正确时才会创建片段; 以下不起作用:
jshell> String st = String 3
//error omitted
jshell> /edit st
| No such snippet: st
但是,片段可以编译,因此可编辑,尽管存在某些编译时错误,例如不匹配的类型 - 以下工作:
jshell> int i = "hello"
//error omitted
jshell> /edit i
最后,可以使用/drop
命令删除片段:
jshell> int i = 13
jshell> /drop i
jshell> System.out.println(i)
| Error:
| cannot find symbol
| symbol: variable i
| System.out.println(i)
|
要删除所有代码段,从而重置 JVM 的状态,请使用\reset
:
jshell> int i = 2
jshell> String s = "hi"
jshell> /reset
| Resetting state.
jshell> i
| Error:
| cannot find symbol
| symbol: variable i
| i
| ^
jshell> s
| Error:
| cannot find symbol
| symbol: variable s
| s
| ^