編輯片段

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