The jshell Command

名称

jshell - 交互式地在Java编程语言的读取-求值-打印循环(REPL)中评估声明、语句和表达式

概要

jshell [选项] [加载文件]

选项
由空格分隔的命令行选项。请参阅jshell的选项
加载文件

在启动工具时要运行的一个或多个脚本。脚本可以包含任何有效的代码片段或JShell命令。

脚本可以是本地文件,也可以是以下预定义脚本之一:

DEFAULT
加载默认条目,通常用作导入。
JAVASE
导入所有Java SE包。
PRINTING
printprintlnprintf定义为jshell工具内部使用的方法。
TOOLING
定义javacjar和其他方法,通过它们的命令行界面在jshell工具内运行JDK工具。

对于多个脚本,请使用空格分隔名称。脚本按照它们在命令行中输入的顺序运行。命令行脚本在启动脚本之后运行。要在启动后运行脚本,请使用/open命令。

要从标准输入接受输入并抑制交互式I/O,请为加载文件输入连字符(-)。此选项允许在管道链中使用jshell工具。

描述

JShell提供了一种交互式地评估Java编程语言的声明、语句和表达式的方式,使学习语言、探索陌生代码和API以及原型化复杂代码变得更容易。Java语句、变量定义、方法定义、类定义、导入语句和表达式都是被接受的。输入的代码片段被称为片段。

随着片段的输入,它们被评估,并提供反馈。反馈因输入的片段和选择的反馈模式而异,从结果和操作说明到无反馈,具体取决于片段。无论反馈模式如何,错误都会被描述。在学习工具时,从详细模式开始以获得最多的反馈。

在启动JShell时,可以使用命令行选项配置初始环境。在JShell内部,可以使用命令修改环境。

现有的片段可以从文件加载以初始化JShell会话,或在会话中的任何时候加载。可以在会话中修改片段以尝试不同的变体并进行更正。要保留片段以供以后使用,请将它们保存到文件中。

jshell的选项

--add-exports 模块/
指定要视为从其定义模块导出的包。
--add-modules 模块[,模块...]
指定要解析的根模块,以及初始模块。
-C标志
提供要传递给编译器的标志。要传递多个标志,请为每个所需的标志或标志参数提供此选项的实例。
--class-path 路径
指定要搜索以定位类文件的目录和存档。此选项会覆盖CLASSPATH环境变量中的路径。如果未设置环境变量且未使用此选项,则会搜索当前目录。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。
--enable-preview
允许代码依赖于此版本的预览功能。
--execution 规范
指定替代执行引擎,其中规范是ExecutionControl规范。请参阅jdk.jshell.spi包的文档以获取规范的语法。
--feedback 模式

设置响应输入时提供的反馈的初始级别。可以在会话中使用/set feedback 模式命令覆盖初始级别。默认值为normal

以下值对于模式是有效的:

verbose
为条目提供详细反馈。在操作结果后显示有关执行的其他信息。下一个提示符与反馈之间用空行分隔。
normal
提供平均量的反馈。下一个提示符与反馈之间用空行分隔。
concise
提供最少的反馈。下一个提示符紧随代码片段或反馈之后。
silent
不提供反馈。下一个提示符紧随代码片段之后。
custom
根据模式定义的方式提供自定义反馈。在JShell内部使用/set mode命令创建自定义反馈模式。
--help-h-?
打印标准选项摘要并退出工具。
--help-extra-X
打印非标准选项摘要并退出工具。非标准选项可能会在不事先通知的情况下更改。
-J标志
提供要传递给运行时系统的标志。要传递多个标志,请为每个所需的标志或标志参数提供此选项的实例。
--module-path 模块路径
指定应用程序模块的位置。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。
--no-startup
防止JShell启动时运行启动脚本。使用此选项仅在JShell启动时运行输入的命令行脚本,或者如果未输入脚本,则启动JShell而不加载任何预加载信息。如果使用了--startup选项,则无法使用此选项。
-q
将反馈模式设置为concise,与输入--feedback concise相同。
-R标志
提供要传递给远程运行时系统的标志。要传递多个标志,请为每个所需的标志或标志参数提供此选项的实例。
-s
将反馈模式设置为silent,与输入--feedback silent相同。
--show-version
打印版本信息并进入工具。
--startup 文件

覆盖此会话的默认启动脚本。脚本可以包含任何有效的代码片段或命令。

脚本可以是本地文件,也可以是以下预定义脚本之一:

DEFAULT
加载默认条目,通常用作导入。
JAVASE
导入所有Java SE包。
PRINTING
printprintlnprintf定义为jshell工具内部使用的方法。
TOOLING
定义javacjar和其他方法,通过它们的命令行界面在jshell工具内运行JDK工具。

对于多个脚本,请为每个脚本提供此选项的单独实例。启动脚本在首次启动JShell时运行,并在使用/reset/reload/env命令重新启动会话时运行。启动脚本按照它们在命令行中输入的顺序运行。

如果使用了--no-startup选项,则无法使用此选项。

-v
将反馈模式设置为verbose,与输入--feedback verbose相同。
--version
打印版本信息并退出工具。

jshell命令

jshell工具内部,使用命令修改环境并管理代码片段。

/drop {名称|id|startID-endID} [{名称|id|startID-endID}...]
删除由名称、ID或ID范围标识的片段,使其无效。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用/list命令查看代码片段的ID。
/edit [选项]

打开编辑器。如果未输入选项,则编辑器将打开活动片段。

以下选项有效:

{名称|id|startID-endID} [{名称|id|startID-endID}...]
使用由名称、ID或ID范围标识的片段打开编辑器。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用/list命令查看代码片段的ID。
-all
使用所有片段打开编辑器,包括启动片段和失败、被覆盖或被删除的片段。
-start
使用在启动JShell时评估的启动片段打开编辑器。
-wait选项,则回应提供的提示。

使用/set editor命令指定要使用的编辑器。如果未设置编辑器,则按顺序检查以下环境变量:JSHELLEDITORVISUALEDITOR。如果在JShell中未设置编辑器且未设置任何编辑器环境变量,则使用简单的默认编辑器。

/env [选项]

显示环境设置,或更新环境设置并重新启动会话。如果未输入选项,则显示当前环境设置。如果输入一个或多个选项,则会话将按以下方式重新启动:

  • 使用提供的选项更新环境设置。

  • 重置执行状态。

  • 运行启动脚本。

  • 以输入顺序默默重放历史记录。历史记录包括在jshell提示符下输入的所有有效片段或/drop命令,在命令行上输入的脚本或使用/open命令输入的脚本。

/reset/env/reload命令中提供的环境设置将保留,除非输入覆盖设置的 选项

以下选项有效:

--add-modules 模块[,模块...]
指定要解析的根模块,以及初始模块。
--add-exports 源模块/=目标模块[,目标模块]*
源模块添加到目标模块的导出。
--class-path 路径
指定要搜索以查找类文件的目录和存档。此选项将覆盖CLASSPATH环境变量中的路径。如果未设置环境变量且未使用此选项,则将搜索当前目录。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。
--module-path 模块路径
指定应用程序模块的位置。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。
/exit [整数表达式片段]
退出工具。如果未输入片段,则退出状态为零。如果输入片段且片段的结果为整数,则结果将用作退出状态。如果发生错误,或者片段的结果不是整数,则会显示错误,工具保持活动状态。
/history
显示在此会话中输入的内容。
/help [命令|主题]

显示有关命令和主题的信息。如果未输入选项,则显示所有命令的信息摘要和可用主题列表。如果提供有效命令,则显示该命令的详细信息。如果输入有效主题,则显示有关该主题的信息。

主题的以下值有效:

context
描述用于配置环境的选项。
intro
提供工具的简介。
shortcuts
描述用于完成命令和片段的按键。请参阅输入快捷键
/imports
显示当前活动的导入,包括启动脚本和在启动JShell时在命令行上输入的脚本。
/list [选项]

显示片段及其ID的列表。如果未输入选项,则显示所有活动片段,但不包括启动片段。

以下选项有效:

{名称|id|startID-endID} [{名称|id|startID-endID}...]
显示由名称、ID或ID范围标识的片段。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。
-all
显示所有片段,包括启动片段和失败、被覆盖或被删除的片段。以s开头的ID是启动片段。以e开头的ID是失败的片段。
-start
显示在启动JShell时评估的启动片段。
/methods [选项]

显示输入的方法的信息。如果未输入选项,则显示所有活动方法的名称、参数类型和返回类型。

以下选项有效:

{名称|id|startID-endID} [{名称|id|startID-endID}...]
显示由名称、ID或ID范围标识的方法的信息。对于ID范围,请提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用/list命令查看代码片段的ID。
-all
显示所有方法的信息,包括启动JShell时添加的方法,以及失败、被覆盖或被删除的方法。
-start
显示在启动JShell时添加的启动方法的信息。
/open 文件

打开指定的脚本并将片段读入工具。脚本可以是本地文件或以下预定义脚本之一:

DEFAULT
加载默认条目,通常用作导入。
JAVASE
导入所有Java SE包。
PRINTING
printprintlnprintf定义为jshell工具内部使用的方法。
TOOLING
定义javacjar和其他通过命令行界面在jshell工具内运行JDK工具的方法。
/reload [选项]

重新启动会话,具体操作如下:

  • 使用提供的选项更新环境设置(如果有)。

  • 重置执行状态。

  • 运行启动脚本。

  • 按输入顺序重放历史记录。历史记录包括在jshell提示符下输入的所有有效片段或/drop命令,在命令行上输入的脚本或使用/open命令输入的脚本。

/reset/env/reload命令中提供的环境设置将保留,除非输入覆盖设置的 选项

以下选项有效:

--add-modules 模块[,模块...]
指定要解析的根模块,以及初始模块。
--add-exports 源模块/=目标模块[,目标模块]*
源模块添加到目标模块的导出。
--class-path 路径
指定要搜索以查找类文件的目录和存档。此选项将覆盖CLASSPATH环境变量中的路径。如果未设置环境变量且未使用此选项,则将搜索当前目录。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。
--module-path 模块路径
指定应用程序模块的位置。对于Linux和macOS,请使用冒号(:)分隔路径中的项目。对于Windows,请使用分号(;)分隔项目。
-quiet
重放有效历史记录而不显示它。错误将被显示。
-restore
将环境重置为工具上次运行时的状态,或者重置为上次在上一次运行中执行/reset/reload/env命令时的状态。自那时起的有效历史记录将被重放。使用此选项还原以前的JShell会话。
/reset [选项]

丢弃所有输入的片段,并按以下方式重新启动会话:

  • 如果有提供选项,则更新环境设置。

  • 重置执行状态。

  • 运行启动脚本。

不会重放历史记录。所有输入的代码都将丢失。

在命令行上输入的环境设置或使用先前的 /reset/env/reload 命令提供的设置将被保留,除非输入覆盖设置的 选项

以下选项有效:

--add-modules module[,module...]
指定要解析的根模块,以及初始模块。
--add-exports source-module/package=target-module[,target-module]*
将来自 source-modulepackage 导出到 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]

设置配置信息,包括外部编辑器、启动设置和反馈模式。此命令还用于创建具有自定义提示、格式和截断值的自定义反馈模式。如果未输入任何设置,则显示当前编辑器、启动设置和反馈模式的设置。

以下值对setting有效:

editor [选项] [命令]

设置在输入/edit命令时启动外部编辑器的命令。命令可以包括由空格分隔的命令参数。如果未输入命令或选项,则显示当前设置。

以下选项有效:

-default
将编辑器设置为JShell提供的默认编辑器。如果输入了用于启动编辑器的命令,则无法使用此选项。
-delete

将编辑器设置为会话启动时有效的编辑器。如果与-retain选项一起使用,则删除保留的编辑器设置,并将编辑器设置为找到的以下环境变量中的第一个: JSHELLEDITORVISUALEDITOR。如果未设置任何编辑器环境变量,则此选项将编辑器设置为默认编辑器。

如果输入了用于启动编辑器的命令,则无法使用此选项。

-retain
保存跨会话的编辑器设置。如果未输入其他选项或命令,则保存当前设置。
-wait
提示用户指示何时完成编辑。否则,当编辑器退出时,控制返回到JShell。如果正在使用的编辑器立即退出,例如,当编辑窗口已存在时,请使用此选项。仅当输入用于启动编辑器的命令时,此选项有效。
feedback [模式]

设置用于响应输入的反馈模式。如果未输入模式,则显示当前模式。

以下模式有效: concisenormalsilentverbose,以及使用/set mode命令创建的任何自定义模式。

format 模式 字段 "格式字符串" 选择器

设置响应输入时提供的反馈的格式。如果未输入模式,则显示所有反馈模式的所有字段的当前格式。如果仅输入了模式,则显示该模式的当前格式。如果仅输入了模式和字段,则显示该字段的当前格式。

要定义格式,需要以下参数:

模式
指定应用响应格式的反馈模式。只能修改使用/set mode命令创建的自定义模式。
字段
指定应用响应格式的上下文特定字段。字段在在线帮助中描述,可通过在JShell中使用/help /set format命令访问。
"格式字符串"
指定要用作指定字段和选择器的响应格式的字符串。格式字符串的结构在在线帮助中描述,可通过在JShell中使用/help /set format命令访问。
选择器
指定应用响应格式的上下文。选择器在在线帮助中描述,可通过在JShell中使用/help /set format命令访问。
mode [模式名称] [现有模式] [选项]

创建具有提供的模式名称的自定义反馈模式。如果未输入模式名称,则显示所有模式的设置,包括模式、提示、格式和截断设置。如果提供现有模式的名称,则将现有模式的设置复制到正在创建的模式中。

以下选项有效:

-command|-quiet
指定在使用该模式时显示的命令反馈级别。创建反馈模式时需要此选项。使用-command显示命令的信息和验证反馈。使用-quiet仅显示命令的基本反馈,例如错误消息。
-delete
删除此会话的命名反馈模式。需要删除要保留的模式的名称。要永久删除保留的模式,请使用此选项的-retain选项。无法删除预定义模式。
-retain
跨会话保存命名的反馈模式。需要保留的模式的名称。

使用/set prompt/set format/set truncation命令配置新的反馈模式。

要开始使用新模式,请使用/set feedback命令。

prompt 模式 "提示字符串" "继续提示字符串"

设置JShell内输入的提示。如果未输入模式,则显示所有反馈模式的当前提示。如果仅输入了模式,则显示该模式的当前提示。

要定义提示,需要以下参数:

模式
指定应用提示的反馈模式。只能修改使用/set mode命令创建的自定义模式。
"提示字符串"
指定要用作输入第一行的提示的字符串。
"继续提示字符串"
指定要用作需要完成代码片段的附加输入行的提示的字符串。
start [-retain] [文件 [文件...]|选项]

设置在输入下一个/reset/reload/env命令时使用的启动脚本的名称。如果输入多个脚本,则按输入顺序运行这些脚本。如果未输入脚本或选项,则显示当前启动设置。

脚本可以是本地文件或以下预定义脚本之一:

DEFAULT
加载默认条目,通常用作导入。
JAVASE
导入所有Java SE包。
PRINTING
printprintlnprintf定义为jshell工具内可用的方法。
TOOLING
定义javacjar和其他通过其命令行界面在jshell工具内运行JDK工具的方法。

以下选项有效:

-default
将启动设置设置为默认设置。
-none
指定不使用任何启动设置。

使用-retain选项保存启动设置跨会话。

truncation 模式 长度 选择器

设置显示值的最大长度。如果未输入模式,则显示所有反馈模式的当前截断值。如果仅输入了模式,则显示该模式的当前截断值。

要定义截断值,需要以下参数:

模式
指定应用截断值的反馈模式。只能修改使用/set mode命令创建的自定义模式。
长度
指定要用作指定选择器的最大长度的无符号整数。
选择器
指定应用截断值的上下文。选择器在在线帮助中描述,可通过在JShell中使用/help /set truncation命令访问。
/types [选项]

显示输入的类、接口和枚举。如果未输入选项,则显示所有当前活动的类、接口和枚举。

以下选项有效:

{名称|id|startID-endID} [{名称|id|startID-endID}...]
显示按名称、ID或ID范围标识的类、接口和枚举的信息。对于ID范围,提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用/list命令查看代码片段的ID。
-all
显示所有类、接口和枚举的信息,包括JShell启动时添加的类、接口和枚举,以及失败、被覆盖或被删除的类、接口和枚举。
-start
显示在JShell启动时添加的启动类、接口和枚举的信息。
/vars [选项]

显示输入的变量的名称、类型和值。如果未输入选项,则显示所有当前活动的变量。

以下选项有效:

{名称|id|startID-endID} [{名称|id|startID-endID}...]
显示按名称、ID或ID范围标识的变量的信息。对于ID范围,提供以连字符分隔的起始ID和结束ID。要提供列表,请使用空格分隔列表中的项目。使用/list命令查看代码片段的ID。
-all
显示所有变量的信息,包括JShell启动时添加的变量,以及失败、被覆盖或被删除的变量。
-start
显示在JShell启动时添加的启动变量的信息。
/?
/help命令相同。
/!
重新运行上一个代码片段。
/{名称|标识|起始标识-结束标识} [{名称|标识|起始标识-结束标识}...]
重新运行由ID、ID范围或名称标识的代码片段。对于ID范围,请提供起始ID和结束ID,用连字符分隔。要提供一个列表,请用空格分隔列表中的项目。列表中的第一项必须是ID或ID范围。使用/list命令查看代码片段的ID。
/-n
重新运行前第-n个代码片段。例如,如果输入了15个代码片段,则/-4运行第11个代码片段。命令不计入计数。

输入快捷方式

在JShell中,可以使用以下快捷方式输入命令和代码片段。

Tab键补全

<tab>

在输入代码片段、命令、子命令、命令参数或命令选项时,使用Tab键可自动完成输入的内容。如果无法确定输入内容,则会提供可能的选项。

在输入方法调用时,在方法调用的左括号后使用Tab键可查看方法的参数。如果方法有多个签名,则会显示所有签名。按第二次Tab键会显示方法的描述和第一个签名的参数。继续按Tab键可查看其他签名的描述。

Shift+<Tab> V
在输入完整表达式后,使用此键序列将表达式转换为根据表达式类型确定的变量声明。
Shift+<Tab> M
在输入完整表达式或语句后,使用此键序列将表达式或语句转换为方法声明。如果输入的是表达式,则返回类型基于表达式的类型。
Shift+<Tab> I
当输入无法解析的标识符时,使用此键序列可显示根据指定类路径内容解析标识符的可能导入项。

命令缩写

如果缩写可以唯一标识一个命令,则会接受该命令的缩写。例如,/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键功能。

行编辑快捷方式
键或键组合 操作
Return 输入当前行。
左箭头 将光标向左移动一个字符。
右箭头 将光标向右移动一个字符。
Ctrl+A 将光标移动到行的开头。
Ctrl+E 将光标移动到行的末尾。
Meta+B 将光标向左移动一个单词。
Meta+F 将光标向右移动一个单词。
Delete 删除光标下的字符。
Backspace 删除光标前的字符。
Ctrl+K 删除从光标到行尾的文本。
Meta+D 删除从光标到单词末尾的文本。
Ctrl+W 删除从光标到前一个空格的文本。
Ctrl+Y 将最近删除的文本粘贴到行中。
Meta+Y 在Ctrl+Y后按下,可循环浏览先前删除的文本。

启动和结束JShell会话的示例

JShell随JDK提供。要启动会话,请在命令行中输入jshell。将打印欢迎消息,并提供输入命令和代码片段的提示。

% jshell
|  欢迎使用 JShell -- 版本 9
|  要了解简介,请输入:/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.*;

jshell>

要结束会话,请使用/exit命令。

jshell> /exit
|  再见

%

输入代码片段的示例

代码片段可以是Java语句、变量定义、方法定义、类定义、导入语句和表达式。如果缺少终止分号,则在完成代码片段时会自动添加分号。

以下示例显示了定义两个变量和一个方法,并运行该方法。请注意,由于未提供变量,因此会自动创建一个临时变量来保存结果。

jshell> int a=4
a ==> 4

jshell> int b=8
b ==> 8

jshell> int square(int i1) {
   ...> return i1 * i1;
   ...> }
|  创建方法 square(int)

jshell> square(b)
$5 ==> 64

更改代码片段的示例

通过重新输入变量、方法或类的定义来更改其定义。

以下示例显示了定义方法并运行该方法:

jshell> String grade(int testScore) {
   ...>     if (testScore >= 90) {
   ...>         return "Pass";
   ...>     }
   ...>     return "Fail";
   ...> }
|  创建方法 grade(int)

jshell> grade(88)
$3 ==> "Fail"

要将方法grade更改为允许更多学生通过,重新输入方法定义并将通过分数更改为80。使用上箭头键检索先前的输入,以避免重新输入并在if语句中进行更改。以下示例显示了新定义并重新运行方法以显示新结果:

jshell> String grade(int testScore) {
   ...>     if (testScore >= 80) {
   ...>         return "Pass";
   ...>     }
   ...>     return "Fail";
   ...> }
|  修改方法 grade(int)

jshell> grade(88)
$5 ==> "Pass"

对于超过几行的代码片段,或者要进行多次更改的情况,请使用/edit命令在编辑器中打开代码片段。更改完成后,关闭编辑窗口以返回控制到JShell会话。以下示例显示了命令和编辑窗口关闭时提供的反馈。使用/list命令显示将通过分数更改为85

jshell> /edit grade
|  修改方法 grade(int)
jshell> /list grade

   6 : String grade(int testScore) {
           if (testScore >= 85) {
               return "Pass";
           }
           return "Fail";
       }

创建自定义反馈模式的示例

反馈模式确定显示的提示、输入代码片段时提供的反馈消息以及显示值的最大长度。提供了预定义的反馈模式。还提供了创建自定义反馈模式的命令。

使用/set mode命令创建新的反馈模式。在以下示例中,新模式mymode 基于预定义反馈模式normal,并显示命令反馈:

jshell> /set mode mymode normal -command
|  创建新的反馈模式: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中,当创建方法时显示字符串created。以下示例显示如何将该字符串更改为defined

jshell> /set format mymode action "defined" added-primary

使用/set feedback命令开始使用刚刚创建的反馈模式。以下示例显示正在使用自定义模式:

jshell> /set feedback mymode
|  反馈模式: mymode

prompt$ int square (int num1){
   continue$ return num1*num1;
   continue$ }
|  定义的方法 square(int)

prompt$