- 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
。 只有在VALID
Status
才能执行可执行代码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
状态的上下文中)。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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
该代码段处于非活动状态,因为它已被新代码段替换。 当添加了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
-
-