模块  jdk.jshell
软件包  jdk.jshell

Class 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()
    • 方法详细信息

      • 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)
        5238021652517Snippet.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的整数将是相同的,它们会相互覆盖,但在其他方面是唯一的。

        在处理片段和片段期间发送回调,并且整个状态不稳定。 不应该调用更改系统状态(包括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)
        设置要执行的自定义引擎。 片段执行将由指定的执行控制规范选择的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

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