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