JShell:Java REPL综合指南(4)

输出会包含任何启动代码(稍后详细介绍)以及任何有效或无效的片段。JShell会根据片段的类型给每个片段ID添加一个前缀。下面是快速确定其意义的方法:

s:片段ID以s开头的是启动代码。

e:片段ID以e开头的产生了错误。

片段ID没有前缀的是有效片段。

Vars、Methods、Types、Imports和Reset命令

JShell提供了多个命令帮助你查看shell的当前状态或上下文。它们都有恰当的名称,而且简单易懂,但是完备起见,我们把它们都列在这里。

你可以使用/vars查看声明的所有变量和它们的值。

jshell> /vars | String greeting = "hello" | String audience = "world" | String saying = "helloworld"

你可以使用/methods命令列出声明的所有方法和它们的签名。

jshell> /methods | String getRandomAudience(List<String>) | String getRandomAudience()

你可以使用/types命令列出所有类型声明。

jshell> /types | class Foo

你可以使用/imports命令列出���前声明的所有导入。

jshell> /imports | import java.io.* | import java.math.* | import java.net.* (shortened for brevity)

最后,你可以使用/reset命令重置和清理包括变量、方法和类型在内的所有状态。

jshell> /reset | Resetting state. jshell> /vars (no variables exist after reset) Edit命令

/edit用于编辑之前输入的片段。Edit命令适用于所有类型的片段,包括有效的、无效的和启动片段。它特别适合编辑产生了错误的多行代码,使你不必重新输入任何东西。

在上文中,当把变量greeting和audience串联成变量saying时,“hello”和“world”之间少了个空格。你可以通过输入/edit和片段ID来编辑。JShell Edit Pad会弹出来,你可以根据需要做任何修改。你还可以使用变量名称代替片段ID。

jshell> /edit 3 (... new JShell Edit Pad window opens ...) jshell> /edit saying (... new JShell Edit Pad window opens ...)

编辑完成后,你可以点击Accept按钮,JShell将对编辑后的片段重新求值。如果重新求值发现片段没有包含任何错误,则给编辑后的片段赋予一个新的片段ID。

你还可以给/edit 传入一个范围或多个ID,一次编辑多个片段。

jshell> /edit 1-4 (... new JShell Edit Pad window opens with snippets 1 through 4 ...) jshell> /edit 1 3-4 (... new JShell Edit Pad window opens with snippets 1 and 3 through 4 ...) Drop命令

/drop用于删除之前的任何片段。

除了编辑行,你还可以选择使用/drop命令删除它。它的用法和edit命令一样,你可以使用片段ID、变量、范围或者它们的组合作为参数。

jshell> /drop 3 | dropped variable $3 jshell> /drop saying | dropped variable saying jshell> /drop 3-4 | dropped variable saying | dropped variable $4 Save命令

/save使你可以把之前输入的片段的输出保存到一个文件。

除了保存输出的文件,/save命令还接收另外的参数,用于指定需要保存的片段ID。该参数的用法和/edit及/drop命令的一样,位于文件名参数之前。

如果未指定任何片段ID,则保存之前输入的所有片段。

jshell> /save output.txt jshell> /save 3-4 output.txt

/save和/open命令(下文介绍)搭配使用会非常有用,可以用于保存当前会话,并稍后恢复。要保存当前会话,包括所有的错误,调用/save命令,传入参数-all。

jshell> /save -all my_jshell_session.txt Open命令

/open命令可以打开之前保存的任何输出,并对其重新求值(包括错误!)

jshell> /open my_jshell_session.txt

为方便使用,JShell还提供了一些预定义的“文件名”:

DEFAULT——包含默认导入片段的文件;

PRINTING——包含若干预定义打印方法的文件;

JAVASE——包含所有Java SE程序包导入的文件。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7c3c84b6ca84b4524bd9151d1c783757.html