- 封闭类:
JShell
JShell 个实例的生成器。通过使用此类的 setter 方法创建 JShell 的自定义实例。在其中零个或多个之后,使用 build() 方法创建一个 JShell 实例。这些都可以链接起来。例如,设置远程输出和错误流:
JShell myShell =
JShell.builder()
.out(myOutStream)
.err(myErrStream)
.build(); 如果不需要特殊设置,只需使用 JShell.builder().build() 或等效的快捷方式 JShell.create() 。
-
方法总结
修饰符和类型方法描述build()构建 JShell 状态引擎。compilerOptions(String... options) 添加编译器选项。err(PrintStream err) 设置运行评估的错误输出(它是System.err)。executionEngine(String executionControlSpec) 设置执行的自定义引擎。executionEngine(ExecutionControlProvider executionControlProvider, Map<String, String> executionControlParameters) 设置执行的自定义引擎。配置FileManager以供编译和源代码分析使用。idGenerator(BiFunction<Snippet, Integer, String> generator) 设置片段识别名称的生成器。in(InputStream in) 设置运行评估的输入(它是System.in)。out(PrintStream out) 设置运行评估的输出(它是System.out)。remoteVMOptions(String... options) 设置用于启动 VM 的其他 VM 选项。tempVariableNameGenerator(Supplier<String> generator) 为Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND的VarSnippet设置临时变量名称生成器。
-
方法详情
-
in
设置运行评估的输入(它是System.in)。注意:将System.in用于片段或其他用户输入的应用程序不能将System.in用作远程进程的输入流。InputStream的read方法可能会抛出InterruptedIOException以指示用户取消输入。当前运行的片段将自动为stopped。默认情况下,如果未设置,则提供一个空输入流 --
new ByteArrayInputStream(new byte[0])。- 参数:
in-InputStream在远程执行过程中被引导到System.in- 返回:
Builder实例(用于链式初始化)
-
out
设置运行评估的输出(它是System.out)。控制进程和远程进程可以共享System.out。如果未设置,默认值为
System.out。- 参数:
out-PrintStream在远程执行过程中被引导到System.out- 返回:
Builder实例(用于链式初始化)
-
err
设置运行评估的错误输出(它是System.err)。控制进程和远程进程可以共享System.err。如果未设置,默认值为
System.err。- 参数:
err- 在远程执行过程中将PrintStream引导至System.err- 返回:
Builder实例(用于链式初始化)
-
tempVariableNameGenerator
为Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND的VarSnippet设置临时变量名称生成器。除非您有明确的需要,否则不要使用此方法。
生成器将用于新创建的 VarSnippet 实例。使用
PersistentSnippet.name()查询变量的名称。回调在片段处理期间发送,JShell 状态不稳定。不能从回调中对
JShell实例进行任何调用。生成的名称在活动片段中必须是唯一的。
默认行为(如果未设置或
generator为空)是将名称生成为带有前缀美元符号(“$”)的序列号。- 参数:
generator-Supplier生成临时变量名字符串或null- 返回:
Builder实例(用于链式初始化)
-
idGenerator
设置片段识别名称的生成器。除非您有明确的需要,否则不要使用此方法。
生成器将用于新创建的 Snippet 实例。识别名称 (id) 使用
Snippet.id()访问,并且可以在StackTraceElement.getFileName()中看到EvalException和UnresolvedReferenceException。生成器的输入是
Snippet和一个整数。两个片段的整数将相同,这两个片段会相互覆盖,但除此之外是唯一的。回调是在片段处理期间发送的,片段和整个状态不稳定。不应调用更改系统状态(包括代码段状态)。除了
Snippet.id()之外,可以查询 Snippet。除了status(Snippet)之外,不能从回调中调用JShell实例。默认行为(如果未设置或
generator为空)是将 id 生成为转换为字符串的整数。- 参数:
generator-BiFunction生成 id 字符串或null- 返回:
Builder实例(用于链式初始化)
-
remoteVMOptions
设置用于启动 VM 的其他 VM 选项。- 参数:
options- 远程虚拟机的选项- 返回:
Builder实例(用于链式初始化)
-
compilerOptions
添加编译器选项。这些附加选项将用于编译器的解析、分析和代码生成调用。不支持干扰结果的选项,并且对 JShell 的操作有未定义的影响。- 参数:
options- 编译器调用的附加选项- 返回:
Builder实例(用于链式初始化)
-
executionEngine
设置执行的自定义引擎。片段执行将由指定执行控制规范选择的ExecutionControl实例提供。最多使用这些重载的executionEngine构建器方法之一。- 参数:
executionControlSpec- 执行控制规范,记录在jdk.jshell.spi包文档中。- 返回:
Builder实例(用于链式初始化)
-
executionEngine
public JShell.Builder executionEngine(ExecutionControlProvider executionControlProvider, Map <String , String > executionControlParameters) 设置执行的自定义引擎。片段执行将由指定的ExecutionControl实例提供。最多使用这些重载的executionEngine构建器方法之一。- 参数:
executionControlProvider- 提供执行引擎的提供者executionControlParameters- 提供者的参数,或null作为默认参数- 返回:
Builder实例(用于链式初始化)
-
fileManager
public JShell.Builder fileManager(Function <StandardJavaFileManager , StandardJavaFileManager > mapping) 配置FileManager以供编译和源代码分析使用。如果未设置或传递 null,将使用编译器的标准文件管理器(身份映射)。用于需要覆盖编译器的正常文件处理的特殊应用程序。有关详细信息,请参阅文件管理器 API。文件管理器输入启用转发文件管理器,如果不需要,可以忽略传入文件管理器(常量函数)。- 参数:
mapping- 给定编译器的标准文件管理器的函数,返回一个文件管理器以供使用- 返回:
Builder实例(用于链式初始化)
-
build
构建 JShell 状态引擎。这是所有 JShell 功能的入口点。这将创建一个用于执行的远程进程。因此关闭返回的实例很重要。- 返回:
- 状态引擎
- 抛出:
IllegalStateException- 如果无法创建JShell实例。
-