编辑片段

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
|  ^