模块 jdk.jshell

类 JShell.Builder

java.lang.Object
jdk.jshell.JShell.Builder
封闭类:
JShell

public static class JShell.Builder extends Object
JShell 个实例的生成器。通过使用此类的 setter 方法创建 JShell 的自定义实例。在其中零个或多个之后,使用 build() 方法创建一个 JShell 实例。这些都可以链接起来。例如,设置远程输出和错误流:
 
   JShell myShell =
    JShell.builder()
     .out(myOutStream)
     .err(myErrStream)
     .build();  
如果不需要特殊设置,只需使用 JShell.builder().build() 或等效的快捷方式 JShell.create()
  • 方法详情

    • in

      public JShell.Builder  in(InputStream  in)
      设置运行评估的输入(它是 System.in )。注意:将 System.in 用于片段或其他用户输入的应用程序不能将 System.in 用作远程进程的输入流。

      InputStreamread 方法可能会抛出 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)
      Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND VarSnippet 设置临时变量名称生成器。

      除非您有明确的需要,否则不要使用此方法。

      生成器将用于新创建的 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 和一个整数。两个片段的整数将相同,这两个片段会相互覆盖,但除此之外是唯一的。

      回调是在片段处理期间发送的,片段和整个状态不稳定。不应调用更改系统状态(包括代码段状态)。除了 Snippet.id() 之外,可以查询 Snippet。除了 status(Snippet) 之外,不能从回调中调用 JShell 实例。

      默认行为(如果未设置或 generator 为空)是将 id 生成为转换为字符串的整数。

      参数:
      generator - BiFunction 生成 id 字符串或 null
      返回:
      Builder 实例(用于链式初始化)
    • remoteVMOptions

      public JShell.Builder  remoteVMOptions(String ... options)
      设置用于启动 VM 的其他 VM 选项。
      参数:
      options - 远程虚拟机的选项
      返回:
      Builder 实例(用于链式初始化)
    • compilerOptions

      public JShell.Builder  compilerOptions(String ... options)
      添加编译器选项。这些附加选项将用于编译器的解析、分析和代码生成调用。不支持干扰结果的选项,并且对 JShell 的操作有未定义的影响。
      参数:
      options - 编译器调用的附加选项
      返回:
      Builder 实例(用于链式初始化)
    • executionEngine

      public JShell.Builder  executionEngine(String  executionControlSpec)
      设置执行的自定义引擎。片段执行将由指定执行控制规范选择的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

      配置 FileManager 以供编译和源代码分析使用。如果未设置或传递 null,将使用编译器的标准文件管理器(身份映射)。用于需要覆盖编译器的正常文件处理的特殊应用程序。有关详细信息,请参阅文件管理器 API。文件管理器输入启用转发文件管理器,如果不需要,可以忽略传入文件管理器(常量函数)。
      参数:
      mapping - 给定编译器的标准文件管理器的函数,返回一个文件管理器以供使用
      返回:
      Builder 实例(用于链式初始化)
    • build

      public JShell  build() throws IllegalStateException
      构建 JShell 状态引擎。这是所有 JShell 功能的入口点。这将创建一个用于执行的远程进程。因此关闭返回的实例很重要。
      返回:
      状态引擎
      抛出:
      IllegalStateException - 如果无法创建 JShell 实例。