- 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。 一个可执行代码段只能在VALIDStatus。
-
-
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 方法 描述 booleanisActive()指示片段是否处于活动状态,也就是说,当调用可能更改其状态的新的JShell.eval(String)或JShell.drop(Snippet)时,将重新评估一个persistent代码段。booleanisDefined()指示该片段是否是JShell的已定义状态的一部分。static Snippet.StatusvalueOf(String name)以指定的名称返回此类型的枚举常量。static Snippet.Status[]values()按照它们声明的顺序返回一个包含此枚举类型常量的数组。
-
-
-
Enum Constant Detail
-
VALID
public static final Snippet.Status VALID
该片段是有效的片段(在当前的JShell状态的上下文中)。 只有片段VALIDStatus可以执行(虽然不是全部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
-
-