Module  jdk.jshell
软件包  jdk.jshell

Class JShell.Builder

  • Enclosing class:
    JShell


    public static class JShell.Builder
    extends Object
    Builder为JShell实例。 使用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作为远程进程的输入流。

        所述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)
        设置VarSnippetSnippet.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()EvalExceptionUnresolvedReferenceException

        发生器的输入是Snippet和整数。 两个Snippets的整数将相同,这两个Snippets会覆盖另一个,但是其他代码是唯一的。

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

        默认行为(如果未设置或generator为空)将生成转换为字符串的整数的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)
        设置要执行的自定义引擎。 代码段执行将由指定的执行控制规范选择的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进行编译和源分析。 如果未设置或传递为空,则将使用编译器的标准文件管理器(身份映射)。 用于需要覆盖编译器正常文件处理的特殊应用程序。 有关详细信息,请参阅文件管理器API。 文件管理器输入可以转发文件管理器,如果不需要,文件管理器可以被忽略(常数函数)。
        参数
        mapping - 给出编译器的标准文件管理器的函数,返回一个要使用的文件管理器
        结果
        Builder实例(用于链接初始化)
      • build

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