模块  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
        评估输入字符串,包括定义和/或执行(如果适用)。 检查输入是否有错误,除非可以延迟错误(如某些unresolvedDependencies引用的情况),错误将中止评估。

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

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

        如果执行环境不在进程中(默认情况下),那么如果评估的代码导致执行环境终止,则此JShell实例将关闭,但调用进程和VM仍然有效。

        参数
        input - 要评估的输入String
        结果
        此评估直接或间接导致的事件列表。
        异常
        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方法。

        如果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实例 JShell
      • diagnostics

        public Stream<Diag> diagnostics​(Snippet snippet)
        返回最新评估片段的诊断信息。 评估可以是因为显式调用eval()或依赖项触发的自动更新。
        参数
        snippet - 查询 Snippet
        结果
        与此代码段对应的诊断程序。 这不包括unresolvedDependencies()报告的unresolvedDependencies引用。
        异常
        IllegalStateException - 如果此 JShell实例已关闭。
        IllegalArgumentException - 如果该代码段与此 JShell实例 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 - 与要取消订阅的订阅对应的令牌。