編輯片段
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
| ^