- java.lang.Object
-
- java.lang.Enum<Snippet.Status>
-
- jdk.jshell.Snippet.Status
-
- All Implemented Interfaces:
-
Serializable
,Comparable<Snippet.Status>
- Enclosing class:
- Snippet
public static enum Snippet.Status extends Enum<Snippet.Status>
描述代码段的当前状态。 这是JShell状态下的Snippet的动态属性,因此使用query on {@code JShell}进行检索。随着状态的变化,
Status
发生变化。 例如,使用eval
创建另一个代码片段可能会解决此代码段的依赖关系(或使这些依赖关系无效),或overwrite此代码段更改其Status
。与
Status
相关联的重要属性有:isDefined()
,如果对其他现有和新的片段可见; 和isActive()
,如果,随着JShell状态的更改,代码段将更新,可能会更改Status
。 一个可执行代码段只能在VALID
Status
。
-
-
Enum Constant Summary
Enum Constants Enum Constant 描述 DROPPED
由于显式调用了JShell.drop(Snippet)
,因此片段无效。NONEXISTENT
该代码段不活跃,因为它不存在。OVERWRITTEN
该代码段已被替换为新的代码段,因此无效。RECOVERABLE_DEFINED
该片段是一个声明片段,具有潜在可恢复的未解析引用或其身体中的其他问题(在当前的JShell
状态的上下文中)。RECOVERABLE_NOT_DEFINED
该片段是具有潜在的可恢复的未解析引用或其他问题的声明片段(在当前的JShell
状态的上下文中)。REJECTED
代码片段无效,因为初始评估时编译失败,并且无法进一步更改JShell状态。VALID
该片段是有效的片段(在当前的JShell
状态的上下文中)。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
isActive()
指示片段是否处于活动状态,也就是说,当调用可能更改其状态的新的JShell.eval(String)
或JShell.drop(Snippet)
时,将重新评估一个persistent代码段。boolean
isDefined()
指示该片段是否是JShell的已定义状态的一部分。static Snippet.Status
valueOf(String name)
以指定的名称返回此类型的枚举常量。static Snippet.Status[]
values()
按照它们声明的顺序返回一个包含此枚举类型常量的数组。
-
-
-
Enum Constant Detail
-
VALID
public static final Snippet.Status VALID
该片段是有效的片段(在当前的JShell
状态的上下文中)。 只有片段VALID
Status
可以执行(虽然不是全部VALID
片段具有可执行代码)。该片段被定义(
isDefined() == true
)。 如果代码段是声明或导入(Snippet.Kind.isPersistent()
),则对其他代码段可见该片段将更新为家属变化(
isActive() == true
),其地位可能成为RECOVERABLE_DEFINED
,RECOVERABLE_NOT_DEFINED
,DROPPED
,或OVERWRITTEN
。
-
RECOVERABLE_DEFINED
public static final Snippet.Status RECOVERABLE_DEFINED
该片段是一个声明片段,具有潜在可恢复的未解析引用或其主体的其他问题(在当前的JShell
状态的上下文中)。 只有DeclarationSnippet
可以有这个Status
。该片段具有有效的签名,并且对其他片段(
isDefined() == true
)可见,因此可以在现有或新的片段中引用,但代码片段无法执行。 将抛出一个UnresolvedReferenceException
尝试执行它。该片段将更新为家属变化(
isActive() == true
),其地位可能成为VALID
,RECOVERABLE_NOT_DEFINED
,DROPPED
,或OVERWRITTEN
。注意:
RECOVERABLE_DEFINED
和RECOVERABLE_NOT_DEFINED
表示可能的可恢复错误,它们的区别在于RECOVERABLE_DEFINED
,代码段为defined 。
-
RECOVERABLE_NOT_DEFINED
public static final Snippet.Status RECOVERABLE_NOT_DEFINED
该片段是具有潜在可恢复的未解析引用或其他问题的声明片段(在当前的JShell
状态的上下文中)。 只有DeclarationSnippet
可以有这个Status
。该片段具有无效的签名,否则实现无法定义。 该片段对其他片段(
isDefined() == false
)不可见,因此不能被引用或执行。该片段将更新为家属变化(
isActive() == true
),其地位可能成为VALID
,RECOVERABLE_DEFINED
,DROPPED
,或OVERWRITTEN
。注意:
RECOVERABLE_DEFINED
和RECOVERABLE_NOT_DEFINED
表示潜在的可恢复错误,它们的区别在于RECOVERABLE_DEFINED
,代码段为defined 。
-
DROPPED
public static final Snippet.Status DROPPED
该代码段由于显式调用了JShell.drop(Snippet)
而无效 。其他片段(
isDefined() == false
)看不到该片段,因此无法引用或执行。随着受抚养人的变化(
isActive() == false
),该片段不会更新,其Status
将永远不会再更改。
-
OVERWRITTEN
public static final Snippet.Status OVERWRITTEN
该代码段已被替换为新的代码段,因此无效。 当添加了JShell.eval
的新片段与以前的片段匹配时,就会发生这种情况。 如果名称匹配,则TypeDeclSnippet
将匹配另一个TypeDeclSnippet
。 例如class X { }
将覆盖class X { int ii; }
或interface X { }
。 如果名称和参数类型匹配,则MethodSnippet
将匹配另一个MethodSnippet
。 例如void m(int a) { }
将覆盖int m(int a) { return a+a; }
。 如果名称匹配,则VarSnippet
将匹配另一个VarSnippet
。 例如double z;
将覆盖long z = 2L;
。 只有PersistentSnippet
可以有这个Status
。其他片段(
isDefined() == false
)看不到该片段,因此无法引用或执行。该代码段不会随着更改(
isActive() == false
)而更新,其Status
将永远不会再更改。
-
REJECTED
public static final Snippet.Status REJECTED
代码片段无效,因为初始评估时编译失败,并且无法进一步更改JShell状态。其他片段(
isDefined() == false
)看不到该片段,因此无法引用或执行。随着受抚养人的变化,该片段不会更新(
isActive() == false
),其Status
将永远不会再更改。
-
NONEXISTENT
public static final Snippet.Status NONEXISTENT
该代码段不活跃,因为它不存在。 仅用于SnippetEvent.previousStatus
的新片段。JShell.status(Snippet)
将永远不会返回这个Status
。思考力,
isDefined()
和isActive()
都定义false
。
-
-
方法详细信息
-
values
public static Snippet.Status[] values()
按照它们声明的顺序返回一个包含此枚举类型常量的数组。 该方法可用于遍历常量如下:for (Snippet.Status c : Snippet.Status.values()) System.out.println(c);
- 结果
- 一个包含这个枚举类型的常量的数组,按照它们被声明的顺序
-
valueOf
public static Snippet.Status valueOf(String name)
以指定的名称返回此类型的枚举常量。 字符串必须完全匹配用于声明此类型的枚举常量的标识符。 (不允许使用外来空白字符。)- 参数
-
name
- 要返回的枚举常量的名称。 - 结果
- 具有指定名称的枚举常数
- 异常
-
IllegalArgumentException
- 如果此枚举类型没有指定名称的常量 -
NullPointerException
- 如果参数为空
-
isActive
public boolean isActive()
指示代码段是否处于活动状态,即当调用可能更改其状态的新的270866244174040或JShell.drop(Snippet)
时,将重新评估一个persistent代码段。 这比isDefined()
更宽泛,因为RECOVERABLE_NOT_DEFINED
的代码段将被更新。- 结果
-
true
如果代码段处于活动状态; 否则false
-
isDefined
public boolean isDefined()
指示该片段是否是JShell的已定义状态的一部分。 编译其他片段可以看到吗?- 结果
-
true
如果Snippet被定义; 否则false
-
-