Jshell - Java Shell 工具
您可以使用语言 shell 来学习 Java 语言、探索新功能和 API 以及对新代码进行原型设计。
介绍 jshell
jshell - 在读取-评估-打印循环 (REPL) 中交互式地评估 Java 编程语言的声明、语句和表达式
概要
jshell [options] [load-files]
options
命令行选项,用空格分隔。请参阅 jshell
的选项。
load-files
工具启动时要运行的一个或多个脚本。脚本可以包含任何有效的代码片段或 jshell
命令。
脚本可以是本地文件,也可以是以下预定义脚本之一
DEFAULT
加载默认条目,这些条目通常用作导入。
JAVASE
导入所有 Java SE 包。
PRINTING
将 print、println 和 printf 定义为 jshell
方法,以便在工具内使用。
对于多个脚本,请使用空格分隔名称。脚本按在命令行上输入的顺序运行。命令行脚本在启动脚本之后运行。要启动 jshell 后运行脚本,请使用 /open 命令。
要接受来自标准输入的输入并抑制交互式 I/O,请为 load-files 输入一个连字符 (-)。此选项允许在管道链中使用 jshell
工具。
描述
jshell
提供了一种交互式地评估 Java 编程语言的声明、语句和表达式的途径,使学习语言、探索不熟悉的代码和 API 以及对复杂代码进行原型设计变得更加容易。接受 Java 语句、变量定义、方法定义、类定义、导入语句和表达式。输入的代码片段称为代码片段。
输入代码片段时,会对其进行评估并提供反馈。反馈从操作的结果和解释到什么都没有,具体取决于输入的代码片段和选择的反馈模式。无论反馈模式如何,都会描述错误。从详细模式开始,以便在学习工具时获得最多的反馈。
命令行选项可用于在启动 jshell
时配置初始环境。在 jshell
中,可以使用命令根据需要修改环境。
可以从文件加载现有代码片段以初始化 jshell
会话,或者在会话中的任何时间加载。可以在会话中修改代码片段以尝试不同的变体并进行更正。要保存代码片段以供日后使用,请将它们保存到文件。
选项
--add-exports module/package
指定要从其定义模块中导出为已导出的包。
--add-modules module[,module...]
指定除初始模块之外还要解析的根模块。
-Cflag
提供一个传递给编译器的标志。要传递多个标志,请为每个需要的标志或标志参数提供此选项的实例。
--class-path path
指定要搜索以查找类文件的目录和存档。此选项会覆盖 CLASSPATH 环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。
- **Linux 和 macOS**,使用冒号 (
:
) 分隔路径中的项。 - **Windows**,使用分号 (
;
) 分隔项。
--enable-preview
允许代码依赖于此版本的预览功能。
--execution specification
指定备用执行引擎,其中 specification 是 ExecutionControl 规范。有关规范的语法,请参阅 jdk.jshell.spi 包的文档。
--feedback mode
设置响应输入内容提供的初始反馈级别。可以使用 /set feedback mode 命令在会话中覆盖初始级别。默认值为 normal。
以下值对 mode 有效
verbose
为条目提供详细反馈。在操作结果之后显示有关执行操作的附加信息。下一个提示符与反馈之间用空行分隔。
normal
提供平均数量的反馈。下一个提示符与反馈之间用空行分隔。
concise
提供最少的反馈。下一个提示符紧跟在代码片段或反馈之后。
silent
不提供任何反馈。下一个提示符紧跟在代码片段之后。
custom
根据模式的定义方式提供自定义反馈。自定义反馈模式是在 JShell 中使用 /set mode 命令创建的。
--help
或 -h
或 -?
打印标准选项的摘要并退出工具。
--help-extra
或 -X
打印非标准选项的摘要并退出工具。非标准选项可能会在未经通知的情况下更改。
-Jflag
提供一个传递给运行时系统的标志。要传递多个标志,请为每个需要的标志或标志参数提供此选项的实例。
--module-path modulepath
指定在何处查找应用程序模块。
- 对于 **Linux 和 macOS**,使用冒号 (
:
) 分隔路径中的项。 - 对于 **Windows**,使用分号 (
;
) 分隔项。
--no-startup
阻止启动脚本在 jshell
启动时运行。使用此选项仅运行在启动 jshell
时在命令行上输入的脚本,或者在没有输入任何脚本的情况下,在没有任何预加载信息的情况下启动 jshell
。如果使用 --startup
选项,则不能使用此选项。
-q
将反馈模式设置为 concise,这与输入 --feedback concise 相同。
-Rflag
提供一个传递给远程运行时系统的标志。要传递多个标志,请为每个要传递的标志或标志参数提供此选项的实例。
-s
将反馈模式设置为 silent,这与输入 --feedback silent 相同。
--show-version
打印版本信息并进入工具。
--startup file
覆盖此会话的默认启动脚本。脚本可以包含任何有效的代码片段或命令。
脚本可以是本地文件,也可以是以下预定义脚本之一
DEFAULT
加载默认条目,这些条目通常用作导入。
JAVASE
导入所有 Java SE 包。
PRINTING
将 print、println 和 printf 定义为 jshell
方法,以便在工具内使用。
对于多个脚本,请为每个脚本提供此选项的单独实例。启动脚本在 jshell
首次启动时以及使用 /reset
、/reload
或 /env
命令重新启动会话时运行。启动脚本按在命令行上输入的顺序运行。
如果使用 --no-startup
选项,则不能使用此选项。
-v
将反馈模式设置为 verbose,这与输入 --feedback verbose 相同。
--version
打印版本信息并退出工具。
命令
在 jshell
工具中,使用命令来修改环境和管理代码片段。
/drop {name|id|startID-endID} [{name|id|startID-endID}...]
删除由名称、ID 或 ID 范围标识的代码片段,使其处于非活动状态。对于 ID 范围,请提供用连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项。使用 /list
命令查看代码片段的 ID。
/edit [option]
打开编辑器。如果未输入任何选项,则编辑器将打开包含活动代码片段。
以下选项有效
{name|id|startID-endID} [{name|id|startID-endID}...]
使用由名称、ID 或 ID 范围标识的代码片段打开编辑器。对于 ID 范围,请提供用连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项。使用 /list
命令查看代码片段的 ID。
-all
使用所有代码片段打开编辑器,包括启动代码片段以及失败、被覆盖或被删除的代码片段。
-start
使用启动时评估的启动代码片段打开编辑器。要退出编辑模式,请关闭编辑器窗口,或者如果在设置编辑器时使用了 -wait
选项,则响应提供的提示符。
使用 /set
editor 命令指定要使用的编辑器。如果未设置编辑器,则会按顺序检查以下环境变量:JSHELLEDITOR
、VISUAL
和 EDITOR
。如果在 JShell 中未设置编辑器,并且未设置任何编辑器环境变量,则会使用简单的默认编辑器。
/env [options]
显示环境设置,或更新环境设置并重新启动会话。如果未输入任何选项,则会显示当前环境设置。如果输入了一个或多个选项,则会按如下方式重新启动会话
- 使用提供的选项更新环境设置
- 重置执行状态。
- 运行启动脚本。
- 静默地按输入顺序重播历史记录。历史记录包括在
jshell
提示符处、在命令行上输入的脚本或使用/open
命令输入的脚本中输入的所有有效代码片段或/drop
命令。
在命令行上输入的环境设置或使用先前的 /reset
、/env
或 /reload
命令提供的环境设置将保留,除非输入了覆盖该设置的选项。
以下选项有效
--add-modules module[,module...]
指定除初始模块之外还要解析的根模块。
--add-exports source-module/package=target-module[,target-module]*
将 package 从 source-module 导出到 target-module。
--class-path path
指定要搜索以查找类文件的目录和存档。此选项会覆盖 CLASSPATH 环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。
- 对于 **Linux 和 macOS**,使用冒号 (
:
) 分隔路径中的项。 - 对于 **Windows**,使用分号 (
;
) 分隔项。
--module-path modulepath
指定在何处查找应用程序模块。
- 对于 **Linux 和 macOS**,使用冒号 (
:
) 分隔路径中的项。 - 对于 **Windows**,使用分号 (
;
) 分隔项。
/exit [integer-expression-snippet]
退出工具。如果未输入任何代码片段,则退出状态为零。如果输入了代码片段,并且代码片段的结果为整数,则结果将用作退出状态。如果发生错误,或者代码片段的结果不是整数,则会显示错误,并且工具将保持活动状态。
/history
显示此会话中的输入内容。
/help [command|subject]
显示有关命令和主题的信息。如果未输入任何选项,则会显示所有命令的信息摘要以及可用主题的列表。如果提供了有效的命令,则会显示该命令的扩展信息。如果输入了有效的主题,则会显示有关该主题的信息。
以下主题值有效
context
描述可用于配置环境的选项。
intro
提供工具的介绍。
shortcuts
描述用于完成命令和代码片段的按键。请参阅输入快捷方式。
/imports
显示当前活动导入,包括来自启动脚本和在启动 jshell
时在命令行上输入的脚本的导入。
/list [option]
显示代码片段及其 ID 的列表。如果未输入任何选项,则会显示所有活动代码片段,但不会显示启动代码片段。
以下选项有效
{name|id|startID-endID} [{name|id|startID-endID}...]
显示由名称、ID 或 ID 范围标识的代码片段。对于 ID 范围,请提供用连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项。
-all
显示所有代码片段,包括启动代码片段以及失败、被覆盖或被删除的代码片段。以 s 开头的 ID 是启动代码片段。以 e 开头的 ID 是失败的代码片段。
-start
显示启动时评估的启动代码片段。
/methods [option]
显示有关输入方法的信息。如果未输入任何选项,则会显示所有活动方法的名称、参数类型和返回类型。
以下选项有效
{name|id|startID-endID} [{name|id|startID-endID}...]
显示由名称、ID 或 ID 范围标识的方法的信息。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。
-all
显示所有方法的信息,包括在启动 JShell 时添加的方法,以及失败、被覆盖或被删除的方法。
-start
显示在启动 JShell 时添加的启动方法的信息。
/open file
打开指定的脚本并将片段读入工具。脚本可以是本地文件,也可以是以下预定义脚本之一
DEFAULT
加载默认条目,这些条目通常用作导入。
JAVASE
导入所有 Java SE 包。
PRINTING
将 print、println 和 printf 定义为 jshell 方法,供工具内部使用。
/reload [options]
重新启动会话,如下所示
- 使用提供的选项(如果有)更新环境设置。
- 重置执行状态。
- 运行启动脚本。
- 按输入顺序重放历史记录。历史记录包括在
jshell
提示符处输入的所有有效片段或/drop
命令,以及在命令行上输入的脚本或使用 /open 命令输入的脚本。
在命令行上输入的环境设置或使用先前的 /reset
、/env
或 /reload
命令提供的环境设置将保留,除非输入了覆盖该设置的选项。
以下选项有效
--add-modules module[,module...]
指定除初始模块之外还要解析的根模块。
--add-exports source-module/package=target-module[,target-module]*
将 package 从 source-module 导出到 target-module。
--class-path path
指定搜索以查找类文件的目录和存档。此选项将覆盖 CLASSPATH 环境变量中的路径。如果未设置环境变量且未使用此选项,则搜索当前目录。对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。对于 Windows,使用分号 (;) 分隔项目。
--module-path modulepath
指定在何处查找应用程序模块。对于 Linux 和 macOS,使用冒号 (:) 分隔路径中的项目。对于 Windows,使用分号 (;) 分隔项目。
-quiet
重放有效历史记录,但不显示它。显示错误。
-restore
将环境重置为工具上一次运行的开始状态,或重置为上一次运行中执行 /reset、/reload 或 /env 命令时的状态。自该点以来的有效历史记录将被重放。使用此选项恢复以前的 JShell 会话。
/reset [options]
丢弃所有输入的片段并重新启动会话,如下所示
- 使用提供的选项(如果有)更新环境设置。
- 重置执行状态。
- 运行启动脚本。
不重放历史记录。所有输入的代码都将丢失。
在命令行上输入或使用以前的 /reset、/env 或 /reload 命令提供的环境设置将保留,除非输入覆盖该设置的选项。
以下选项有效
--add-modules module[,module...]
指定除初始模块之外还要解析的根模块。
--add-exports source-module/package=target-module[,target-module]*
将 package 从 source-module 导出到 target-module。
--class-path path
指定要搜索以查找类文件的目录和存档。此选项会覆盖 CLASSPATH 环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。
- 对于 **Linux 和 macOS**,使用冒号 (
:
) 分隔路径中的项。 - 对于 **Windows**,使用分号 (
;
) 分隔项。
--module-path modulepath
指定在何处查找应用程序模块。对于 Linux 和 macOS,使用冒号 (:
) 分隔路径中的项目。对于 Windows,使用分号 (;
) 分隔项目。
/save [options] file
将片段和命令保存到指定的文件。如果未输入任何选项,则保存活动片段。
以下选项有效
{name|id|startID-endID} [{name|id|startID-endID}...]
保存由名称、ID 或 ID 范围标识的片段和命令。对于 ID 范围,请提供以连字符分隔的起始 ID 和结束 ID。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。
-all
保存所有片段,包括启动片段以及被覆盖或失败的片段。
-history
保存当前会话中输入的所有命令和片段的顺序历史记录。
-start
保存当前启动设置。如果未提供任何启动脚本,则保存一个空文件。
/set [setting]
设置配置信息,包括外部编辑器、启动设置和反馈模式。此命令还用于创建具有自定义提示、格式和截断值的自定义反馈模式。如果未输入任何设置,则显示编辑器、启动设置和反馈模式的当前设置。
以下值对设置有效
editor [options] [command]
设置在输入 /edit 命令时用于启动外部编辑器的命令。该命令可以包含用空格分隔的命令参数。如果未输入任何命令或选项,则显示当前设置。
以下选项有效
-default
将编辑器设置为 JShell 提供的默认编辑器。如果输入了用于启动编辑器的命令,则不能使用此选项。
-delete
将编辑器设置为会话开始时生效的编辑器。如果与 -retain 选项一起使用,则删除保留的编辑器设置,并将编辑器设置为以下第一个找到的环境变量:JSHELLEDITOR
、VISUAL
或 EDITOR
。如果未设置任何编辑器环境变量,则此选项将编辑器设置为默认编辑器。
如果输入了用于启动编辑器的命令,则不能使用此选项。
-retain
在会话之间保存编辑器设置。如果未输入其他选项或命令,则保存当前设置。
-wait
提示用户指示编辑何时完成。否则,编辑器退出后,控制权将返回到 JShell。如果使用的编辑器立即退出,例如,当编辑窗口已存在时,请使用此选项。此选项仅在输入了用于启动编辑器的命令时有效。
feedback [mode]
设置用于响应输入的反馈模式。如果未输入任何模式,则显示当前模式。
以下模式有效:concise
、normal
、silent
、verbose
以及使用 /set
mode 命令创建的任何自定义模式。
format mode field "format-string" selector
设置响应输入时提供的反馈的格式。如果未输入任何模式,则显示所有反馈模式的所有字段的当前格式。如果只输入了一个模式,则显示该模式的当前格式。如果只输入了一个模式和一个字段,则显示该字段的当前格式。
要定义格式,需要以下参数
mode
指定将响应格式应用到的反馈模式。只有使用 /set
mode 命令创建的自定义模式才能修改。
field
指定将响应格式应用到的特定于上下文的字段。这些字段在联机帮助中进行了描述,可以通过 jshell
使用 /help
/set
format 命令访问。
format-string
指定用作指定字段和选择器的响应格式的字符串。格式字符串的结构在联机帮助中进行了描述,可以通过 JShell 使用 /help
/set
format 命令访问。
selector
指定应用响应格式的上下文。选择器在联机帮助中进行了描述,可以通过 jshell
使用 /help
/set
format 命令访问。
mode [mode-name] [existing-mode] [options]
使用提供的模式名称创建自定义反馈模式。如果未输入任何模式名称,则显示所有模式的设置,包括模式、提示、格式和截断设置。如果提供了现有模式的名称,则将现有模式的设置复制到正在创建的模式。
以下选项有效
-command|-quiet
指定使用该模式时显示的命令反馈级别。创建反馈模式时需要此选项。使用 -command
显示命令的信息和验证反馈。使用 -quiet
仅显示命令的基本反馈,例如错误消息。
-delete
删除此会话的命名反馈模式。需要删除的模式名称。要永久删除保留的模式,请将 -retain
选项与该选项一起使用。预定义模式无法删除。
-retain
在会话之间保存命名反馈模式。需要保留的模式名称。使用 /set prompt
、/set format
和 /set truncation
命令配置新的反馈模式。
要开始使用新模式,请使用 /set feedback
命令。
prompt mode "prompt-string" "continuation-prompt-string"
设置 JShell 中输入的提示。如果未输入任何模式,则显示所有反馈模式的当前提示。如果只输入了一个模式,则显示该模式的当前提示。
要定义提示,需要以下参数
mode
指定将提示应用到的反馈模式。只有使用 /set
mode 命令创建的自定义模式才能修改。
prompt-string
指定用作第一行输入的提示的字符串。
continuation-prompt-string
指定用作完成片段所需的额外输入行提示的字符串。
start [-retain] [file [file...]|option]
设置在下次输入 /reset
、/reload
或 /env
命令时使用的启动脚本名称。如果输入了多个脚本,则按输入顺序运行这些脚本。如果没有输入脚本或选项,则显示当前启动设置。
脚本可以是本地文件,也可以是以下预定义脚本之一
DEFAULT
加载默认条目,这些条目通常用作导入。JAVASE
导入所有 Java SE 包。PRINTING
将 print、println 和 printf 定义为 jshell 方法,供在工具内使用。以下选项有效
-default
将启动设置设置为默认设置。
-none
指定不使用任何启动设置。使用 -retain
选项在会话之间保存启动设置。
truncation mode length selector
设置显示值的最大长度。如果没有输入模式,则显示所有反馈模式的当前截断值。如果只输入模式,则显示该模式的当前截断值。
要定义截断值,需要以下参数
mode
指定将截断值应用到的反馈模式。只能修改使用 /set
模式命令创建的自定义模式。
length
指定用作指定选择器最大长度的无符号整数。
selector
指定应用截断值的上下文。选择器在联机帮助中进行了描述,可以通过 jshell
使用 /help /set truncation
命令访问联机帮助。
/types [option]
显示已输入的类、接口和枚举。如果没有输入选项,则显示所有当前活动的类、接口和枚举。
以下选项有效
{name|id|startID-endID} [{name|id|startID-endID}...]
显示由名称、ID 或 ID 范围标识的类、接口和枚举的信息。对于 ID 范围,请提供起始 ID 和结束 ID,并用连字符分隔。要提供列表,请用空格分隔列表中的项目。使用 /list 命令查看代码片段的 ID。
-all
显示所有类、接口和枚举的信息,包括在启动 JShell 时添加的类、接口和枚举,以及失败、被覆盖或被删除的类、接口和枚举。
-start
显示在启动 JShell 时添加的启动类、接口和枚举的信息。
/vars [option]
显示已输入的变量的名称、类型和值。如果没有输入选项,则显示所有当前活动的变量。
以下选项有效
{name|id|startID-endID} [{name|id|startID-endID}...]
显示由名称、ID 或 ID 范围标识的变量的信息。对于 ID 范围,请提供起始 ID 和结束 ID,并用连字符分隔。要提供列表,请用空格分隔列表中的项目。使用 /list
命令查看代码片段的 ID。
-all
显示所有变量的信息,包括在启动 JShell 时添加的变量,以及失败、被覆盖或被删除的变量。
-start
显示在启动 jshell
时添加的启动变量的信息。/?
与 /help 命令相同。
/!
重新运行最后一个代码片段。
/{name|id|startID-endID} [{name|id|startID-endID}...]
重新运行由 ID、ID 范围或名称标识的代码片段。对于 ID 范围,请提供起始 ID 和结束 ID,并用连字符分隔。要提供列表,请用空格分隔列表中的项目。列表中的第一个项目必须是 ID 或 ID 范围。使用 /list
命令查看代码片段的 ID。
/-n
重新运行倒数第 n 个代码片段。例如,如果输入了 15 个代码片段,则 /-4
运行第 11 个代码片段。命令不包含在计数中。
输入快捷键
以下快捷键可用于在 JShell 中输入命令和代码片段。
制表符完成
在输入方法调用时,在方法调用的左括号后使用 Tab 键查看方法的参数。如果方法有多个签名,则会显示所有签名。第二次按 Tab 键会显示方法的描述和第一个签名的参数。继续按 Tab 键以查看任何其他签名的描述。
Shift+
Shift+
Shift+
命令缩写
如果缩写唯一标识命令,则接受命令的缩写。例如,/l
被识别为 /list
命令。但是,/s
不是有效的缩写,因为它无法确定是指 /set
还是 /save
命令。使用 /se
表示 /set
命令,使用 /sa
表示 /save
命令。
缩写也适用于子命令、命令参数和命令选项。例如,使用 /m -a
显示所有方法。
历史记录导航
在会话之间维护已输入内容的历史记录。使用向上和向下箭头滚动浏览当前和过去会话中的命令和代码片段。使用 Ctrl 键与向上和向下箭头组合,跳过多行代码片段的第一行以外的所有行。
历史记录搜索
使用 Ctrl+R 键组合在历史记录中搜索输入的字符串。提示符会更改以显示字符串和匹配项。Ctrl+R 从历史记录中的当前位置向后搜索,遍历较早的条目。Ctrl+S 从历史记录中的当前位置向前搜索,遍历较晚的条目。
输入编辑
JShell 的编辑功能类似于其他常见 shell 的编辑功能。键盘键和键组合提供行编辑快捷键。Ctrl 键和 Meta 键用于键组合。如果您的键盘没有 Meta 键,则 Alt
键通常映射为提供 Meta 键功能。
启动和停止 jshell 会话的示例
jshell 与 JDK 一起提供。要启动会话,请在命令行上输入 jshell
。会打印欢迎消息,并提供用于输入命令和代码片段的提示符。
jshell
| Welcome to JShell -- Version 16
| For an introduction type: /help intro
jshell>
要查看在启动 JShell 时自动加载了哪些代码片段,请使用 /list -start
命令。默认启动代码片段是常见包的导入语句。每个代码片段的 ID 以字母 s 开头,表示它是启动代码片段。
jshell> /list -start
s1 : import java.io.*;
s2 : import java.math.*;
s3 : import java.net.*;
s4 : import java.nio.file.*;
s5 : import java.util.*;
s6 : import java.util.concurrent.*;
s7 : import java.util.function.*;
s8 : import java.util.prefs.*;
s9 : import java.util.regex.*;
s10 : import java.util.stream.*;
要结束会话,请使用 /exit 命令。
jshell> /exit
| Goodbye
%
输入代码片段的示例
代码片段是 Java 语句、变量定义、方法定义、类定义、导入语句和表达式。如果缺少终止分号,则会自动在完成的代码片段的末尾添加终止分号。
以下示例显示了定义的两个变量和一个方法,以及运行该方法。请注意,由于没有提供变量,因此会自动创建一个 scratch 变量来保存结果。
jshell> int a=4
a ==> 4
jshell> int b=8
b ==> 8
jshell> int square(int i1) {
...> return i1 * i1;
...> }
| created method square(int)
jshell> square(b)
$5 ==> 64
更改代码片段的示例
通过再次输入来更改变量、方法或类的定义。
以下示例显示了定义的方法和运行该方法
jshell> String grade(int testScore) {
...> if (testScore >= 90) {
...> return "Pass";
...> }
...> return "Fail";
...> }
| created method grade(int)
jshell> grade(88)
$3 ==> "Fail"
要更改 grade 方法以允许更多学生通过,请再次输入方法定义并将及格分数更改为 80。使用向上箭头键检索以前的条目以避免重新输入它们,并在 if 语句中进行更改。以下示例显示了新定义并重新运行该方法以显示新结果
jshell> String grade(int testScore) {
...> if (testScore >= 80) {
...> return "Pass";
...> }
...> return "Fail";
...> }
| modified method grade(int)
jshell> grade(88)
$5 ==> "Pass"
对于长度超过几行的代码片段,或者要进行多次更改,请使用 /edit 命令在编辑器中打开代码片段。完成更改后,关闭编辑窗口以将控制权返回到 jshell
会话。以下示例显示了命令以及关闭编辑窗口时提供的反馈。/list 命令用于显示及格分数已更改为 85。
jshell> /edit grade
| modified method grade(int)
jshell> /list grade
6 : String grade(int testScore) {
if (testScore >= 85) {
return "Pass";
}
return "Fail";
}
创建自定义反馈模式的示例
反馈模式确定显示的提示符、输入代码片段时提供的反馈消息以及显示值的最大长度。提供了预定义的反馈模式。还提供了用于创建自定义反馈模式的命令。
使用 /set
模式命令创建新的反馈模式。在以下示例中,新的模式 mymode
基于预定义的反馈模式 normal,并显示验证命令反馈
jshell> /set mode mymode normal -command
| Created new feedback mode: mymode
由于新模式基于 normal 模式,因此提示符相同。以下示例显示了如何查看使用哪些提示符,然后将提示符更改为自定义字符串。第一个字符串表示标准 JShell 提示符。第二个字符串表示多行代码片段中附加行的提示符。
jshell> /set prompt mymode
| /set prompt mymode "\njshell> " " ...> "
jshell> /set prompt mymode "\nprompt$ " " continue$ "
显示值的最大长度由截断设置控制。不同类型的值可以具有不同的长度。以下示例设置了 72
的总体截断值,以及 500
的变量值表达式截断值
jshell> /set truncation mymode 72
jshell> /set truncation mymode 500 varvalue
输入代码片段后显示的反馈由格式设置控制,并基于输入的代码片段类型以及对该代码片段执行的操作。在预定义的模式 normal 中,创建方法时会显示创建的字符串。以下示例显示了如何将该字符串更改为 defined
jshell> /set format mymode action "defined" added-primary
使用 /set feedback 命令开始使用刚刚创建的反馈模式。以下示例显示了自定义模式的使用情况
jshell> /set feedback mymode
| Feedback mode: mymode
prompt$ int square (int num1){
continue$ return num1*num1;
continue$ }
| defined method square(int)
prompt$
更多学习
最后更新时间: 2021 年 9 月 14 日
返回教程列表