Module  jdk.jshell
软件包  jdk.jshell

Class JShell

    • 方法详细信息

      • builder

        public static JShell.Builder builder​()
        JShell.Builder工厂方法,反过来,用于创建JShell实例。 创建的默认实例JShellJShell.builder().build() 有关更多施工选项,请参阅JShell.Builder
        结果
        一个 Builder
        另请参见:
        JShell.Builder
      • sourceCodeAnalysis

        public SourceCodeAnalysis sourceCodeAnalysis​()
        访问源代码分析功能。 JShell一个实例将始终从sourceCodeAnalysis()返回相同的SourceCodeAnalysis实例。
        结果
        一个SourceCodeAnalysis的实例,可用于源分析,如完成检测和完成建议。
      • eval

        public List<SnippetEvent> eval​(String input)
                                throws IllegalStateException
        评估输入字符串,包括定义和/或执行(如果适用)。 检查输入错误,除非可以延迟错误(如某些未解析的依赖关系引用的情况),错误将中止评估。

        输入应该是一个完整的源代码片段,即一个表达式,语句,变量声明,方法声明,类声明或导入。 要将任意输入打破成个别的完整片段,请使用SourceCodeAnalysis.analyzeCompletion(String)

        对于进口,添加导入。 类,接口。 定义方法和变量。 执行变量,语句和表达式的初始化。 修饰符public,protected,private,static和final在op级别声明中不允许,并且会被警告忽略。 同步的,原生的,抽象的和默认的顶级方法是不允许的,并且是错误。 如果声明的先前定义被覆盖,那么会有一个事件显示其状态更改为OVERWRITTEN,这不会发生丢弃,被拒绝或已被覆盖的声明。

        如果执行环境不正常,则默认情况下,如果评估的代码导致执行环境终止,则此JShell实例将关闭,但调用进程和VM保持有效。

        参数
        input - 要评估的输入字符串
        结果
        由该评估直接或间接引起的事件清单。
        异常
        IllegalStateException - 如果这个 JShell实例是关闭的。
        另请参见:
        SourceCodeAnalysis.analyzeCompletion(String)onShutdown(java.util.function.Consumer)
      • addToClasspath

        public void addToClasspath​(String path)
        指定的路径被添加到eval()中使用的类路径的末尾。 请注意,从放置eval(String)代码的软件包中无法访问未命名的软件包。
        参数
        path - 添加到类路径的路径。
        异常
        IllegalStateException - 如果此 JShell实例已关闭。
      • stop

        public void stop​()
        尝试停止当前运行的评估。 eval(java.lang.String)方法正在运行并且正在执行用户的代码时调用时,将尝试停止用户的代码。 请注意,通常,这种方法需要与运行eval方法的线程不同的线程调用。

        如果eval(java.lang.String)方法没有运行,什么都不做。

        在某些情况下,停止用户代码的尝试可能会失败,这可能包括执行在I / O操作中被阻止时,或者当用户的代码捕获ThreadDeath异常时。

      • close

        public void close​()
        关闭这个状态引擎。 释放资源。 当这种状态引擎不再需要时,应该被调用。
        Specified by:
        close在接口 AutoCloseable
      • snippets

        public Stream<Snippet> snippets​()
        返回所有片段。
        结果
        id序列中所有当前片段的片段。
      • variables

        public Stream<VarSnippet> variables​()
        返回活动变量片段。 这个方便方法相当于snippets()过滤status(snippet).isActive() && snippet.kind() == Kind.VARIABLE并转换为VarSnippet
        结果
        主动声明的变量。
      • methods

        public Stream<MethodSnippet> methods​()
        返回活动方法代码段。 这种方便方法相当于snippets()过滤status(snippet).isActive() && snippet.kind() == Kind.METHOD并转换为MethodSnippet。
        结果
        主动声明的方法。
      • types

        public Stream<TypeDeclSnippet> types​()
        返回活动类型声明(类,接口,注释类型和枚举)片段。 这种方便方法相当于snippets()过滤status(snippet).isActive() && snippet.kind() == Kind.TYPE_DECL并转换为TypeDeclSnippet。
        结果
        活动声明的类型声明。
      • imports

        public Stream<ImportSnippet> imports​()
        返回活动的导入片段。 这种方便方法相当于snippets()过滤status(snippet).isActive() && snippet.kind() == Kind.IMPORT并转换为ImportSnippet。
        结果
        主动声明的进口声明。
      • status

        public Snippet.Status status​(Snippet snippet)
        返回该片段的状态。 这是由于显式eval()调用或依赖关系触发的自动更新而更新。
        参数
        snippet - 查询 Snippet
        结果
        与此代码段相对应的状态
        异常
        IllegalStateException - 如果这个 JShell实例是关闭的。
        IllegalArgumentException - 如果该片段未与此 JShell实例相关联。
      • diagnostics

        public Stream<Diag> diagnostics​(Snippet snippet)
        返回片段最近评估的诊断。 评估可能是因为显式的eval()调用或依赖关系触发的自动更新。
        参数
        snippet - 查询 Snippet
        结果
        与此代码段相对应的诊断。 这不包括unresolvedDependencies()报告的未解析的unresolvedDependencies()
        异常
        IllegalStateException - 如果这个 JShell实例是关闭的。
        IllegalArgumentException - 如果该片段未与此 JShell实例相关联。
      • unresolvedDependencies

        public Stream<String> unresolvedDependencies​(DeclarationSnippet snippet)
        对于RECOVERABLE_DEFINEDRECOVERABLE_NOT_DEFINED声明,代码片段的当前未解析的依赖关系的名称。 对于给定的方法,此方法的返回值可能会在另一个代码段的eval()drop()导致更新依赖关系时更改。
        参数
        snippet - 申报 Snippet查询
        结果
        当前未解析依赖关系的符号名称流。
        异常
        IllegalStateException - 如果这个 JShell实例是关闭的。
        IllegalArgumentException - 如果该片段未与此 JShell实例相关联。
      • onShutdown

        public JShell.Subscription onShutdown​(Consumer<JShell> listener)
                                       throws IllegalStateException
        当JShell实例终止时,注册要调用的回调。 这是因为客户端进程已经结束(例如称为System.exit(0))或连接已关闭,如close()。 每个呼叫都添加一个新的订阅。
        参数
        listener - 状态终止时执行的操作。
        结果
        一个可用于 unsubscribe此订阅的令牌。
        异常
        IllegalStateException - 如果此JShell实例已关闭
      • unsubscribe

        public void unsubscribe​(JShell.Subscription token)
        取消回拨订阅。
        参数
        token - 与订阅相对应的令牌将被取消订阅。