- java.lang.Object
-
- java.lang.Enum<Snippet.Status>
-
- jdk.jshell.Snippet.Status
-
- 实现的所有接口
-
Serializable,Comparable<Snippet.Status>
- Enclosing class:
- Snippet
public static enum Snippet.Status extends Enum<Snippet.Status>
描述代码段的当前状态。 这是JShell状态中Snippet的动态属性 - 因此可以使用query on {@code JShell}进行检索。Status随着状态的变化而变化。 例如,使用eval创建另一个代码段可能会解析此Snippet的依赖关系(或使这些依赖关系无效),或者overwrite此代码段更改其Status。与
Status相关的重要属性为:isDefined(),如果其他现有和新片段可见; 和isActive(),如果,当JShell状态发生变化时,代码片段将更新,可能会更改Status。 只有在VALIDStatus才能执行可执行代码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状态的上下文中)。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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
该代码段处于非活动状态,因为它已被新代码段替换。 当添加了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- 如果参数为null
-
isActive
public boolean isActive()
指示代码段是否处于活动状态,即,当调用可能更改其状态的新JShell.eval(String)或JShell.drop(Snippet)时 ,是否会重新评估persistent代码段。 这比isDefined()更广泛,因为将更新片段RECOVERABLE_NOT_DEFINED。- 结果
-
true如果代码段处于活动状态; 否则false
-
isDefined
public boolean isDefined()
指示代码段当前是否是JShell的已定义状态的一部分。 编译其他片段是否可见?- 结果
-
true如果定义了Snippet; 否则false
-
-