- 所有已实现的接口:
Serializable,Comparable<Snippet.Status>,Constable
- 封闭类:
Snippet
JShell 检索。
Status 随着状态的变化而变化。例如,使用 eval 创建另一个片段可能会解决此片段的依赖项(或使这些依赖项无效),或者 覆盖 此片段更改其 Status 。
与 Status 相关的重要属性是: isDefined() ,如果它对其他现有和新片段可见;和 isActive() ,如果随着 JShell 状态的变化,代码片段将更新,可能会改变 Status 。可执行代码片段只有在 VALID Status 中才能执行。
- 参见:
-
内部类总结
在类 java.lang.Enum 中声明的嵌套类/接口
Enum.EnumDesc<E extends Enum<E>> -
枚举常量总结
枚举常量枚举常量描述由于对JShell.drop(Snippet)的显式调用,该代码段处于非活动状态。该代码段处于非活动状态,因为它尚不存在。该代码段处于非活动状态,因为它已被新代码段替换。该片段是一个声明片段,其正文中可能存在可恢复的未解决引用或其他问题(在当前JShell状态的上下文中)。该片段是一个声明片段,其中包含可能可恢复的未解决引用或其他问题(在当前JShell状态的上下文中)。该代码段处于非活动状态,因为它在初始评估时编译失败,并且无法随着 JShell 状态的进一步更改而变得有效。该片段是一个有效的片段(在当前JShell状态的上下文中)。 -
方法总结
修饰符和类型方法描述booleanisActive()boolean指示片段当前是否是 JShell 定义状态的一部分。static Snippet.Status返回具有指定名称的此类的枚举常量。static Snippet.Status[]values()返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。
-
枚举常量详细信息
-
VALID
该片段是一个有效的片段(在当前JShell状态的上下文中)。只能执行带有VALIDStatus的片段(尽管并非所有VALID片段都有可执行代码)。片段已定义 (
isDefined() == true)。如果该片段是声明或导入(Snippet.Kind.isPersistent()),则它对其他片段可见代码段将随着依赖项更改 (
isActive() == true) 更新,其状态可能变为RECOVERABLE_DEFINED、RECOVERABLE_NOT_DEFINED、DROPPED或OVERWRITTEN。 -
RECOVERABLE_DEFINED
该片段是一个声明片段,其正文中可能存在可恢复的未解决引用或其他问题(在当前JShell状态的上下文中)。只有DeclarationSnippet才能拥有这个Status。该代码段具有有效签名,并且对其他代码段 (
isDefined() == true) 可见,因此可以在现有或新代码段中引用,但无法执行该代码段。UnresolvedReferenceException将在尝试执行它时抛出。该片段将随着依赖项的更改 (
isActive() == true) 更新,其状态可能变为VALID、RECOVERABLE_NOT_DEFINED、DROPPED或OVERWRITTEN。注意:
RECOVERABLE_DEFINED和RECOVERABLE_NOT_DEFINED都表示潜在的可恢复错误,它们的不同之处在于,对于RECOVERABLE_DEFINED,片段是 定义的 。 -
RECOVERABLE_NOT_DEFINED
该片段是一个声明片段,其中包含可能可恢复的未解决引用或其他问题(在当前JShell状态的上下文中)。只有DeclarationSnippet才能拥有这个Status。该代码段具有无效签名或实现无法定义它。该代码段对其他代码段 (
isDefined() == false) 不可见,因此无法引用或执行。该代码段将随着依赖项更改 (
isActive() == true) 更新,其状态可能变为VALID、RECOVERABLE_DEFINED、DROPPED或OVERWRITTEN。注意:
RECOVERABLE_DEFINED和RECOVERABLE_NOT_DEFINED都表示潜在的可恢复错误,它们的不同之处在于,对于RECOVERABLE_DEFINED,片段是 定义的 。 -
DROPPED
由于对JShell.drop(Snippet)的显式调用,该代码段处于非活动状态。该片段对其他片段 (
isDefined() == false) 不可见,因此无法引用或执行。该片段不会随着依赖项的更改而更新 (
isActive() == false),其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
该代码段处于非活动状态,因为它在初始评估时编译失败,并且无法随着 JShell 状态的进一步更改而变得有效。该片段对其他片段 (
isDefined() == false) 不可见,因此无法引用或执行。该片段不会随着依赖项的更改而更新 (
isActive() == false),其Status将永远不会再次更改。 -
NONEXISTENT
该代码段处于非活动状态,因为它尚不存在。仅在SnippetEvent.previousStatus中用于新片段。JShell.status(Snippet)永远不会返回这个Status。空洞地,
isDefined()和isActive()都被定义为false。
-
-
方法详情
-
values
返回一个数组,其中包含此枚举类的常量,按照它们声明的顺序排列。- 返回:
- 包含此枚举类常量的数组,按照它们声明的顺序排列
-
valueOf
返回具有指定名称的此类的枚举常量。字符串必须匹配确切地用于在此类中声明枚举常量的标识符。 (不允许使用无关的空白字符。)- 参数:
name- 要返回的枚举常量的名称。- 返回:
- 具有指定名称的枚举常量
- 抛出:
IllegalArgumentException- 如果此枚举类没有具有指定名称的常量NullPointerException- 如果参数为空
-
isActive
public boolean isActive()指示片段是否处于活动状态,即当调用可能更改其状态的新JShell.eval(String)或JShell.drop(Snippet)时,是否会重新评估persistent片段。这比isDefined()更广泛,因为RECOVERABLE_NOT_DEFINED的片段将被更新。- 返回:
true如果代码段处于活动状态;否则false
-
isDefined
public boolean isDefined()指示片段当前是否是 JShell 定义状态的一部分。其他片段的编译是否可见?- 返回:
true如果代码段已定义;否则false
-