Перечисление класса Snippet.Status
- Все реализуемые интерфейсы:
Serializable, Comparable<Snippet.Status>, Constable
- Внешний класс:
Snippet
public static enum Snippet.Status extends Enum<Snippet.Status>
JShell. Status меняется при изменении состояния. Например, создание другого фрагмента с помощью eval может разрешить зависимости этого фрагмента (или сделать их недействительными) либо заменить этот фрагмент, изменив его Status.
Важные свойства, связанные с Status: isDefined() — виден ли он другим существующим и новым фрагментам; и isActive() — будет ли фрагмент обновляться при изменении состояния JShell, что может изменить Status. Выполняемый фрагмент кода можно выполнить, только если он находится в Status VALID.
- С момента:
- 9
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе Enum
Enum.EnumDesc<E>
Краткое описание констант перечисления
| Константа перечисления | Описание |
|---|---|
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), способного изменить его состояние. |
boolean |
isDefined() |
Показывает, является ли фрагмент кода в данный момент частью определённого состояния JShell. |
static Snippet.Status |
valueOf |
Возвращает константу перечисления этого класса с указанным именем. |
static Snippet.Status[] |
values() |
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления. |
Подробное описание констант перечисления
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). Такое Status может иметь только DeclarationSnippet. Фрагмент кода имеет корректную сигнатуру и виден другим фрагментам (isDefined() == true), поэтому на него можно ссылаться в существующих или новых фрагментах, но его нельзя выполнить. При попытке выполнить его будет выброшено исключение UnresolvedReferenceException.
Фрагмент кода будет обновляться при изменении зависимых от него фрагментов (isActive() == true); его состояние может стать VALID, RECOVERABLE_NOT_DEFINED, DROPPED или OVERWRITTEN.
Примечание: и RECOVERABLE_DEFINED, и RECOVERABLE_NOT_DEFINED указывают на потенциально устранимые ошибки; они различаются тем, что в случае RECOVERABLE_DEFINED фрагмент кода определён.
RECOVERABLE_NOT_DEFINED
public static final Snippet.Status RECOVERABLE_NOT_DEFINED
JShell). Такое Status может иметь только DeclarationSnippet. Фрагмент кода имеет некорректную сигнатуру или реализация по иной причине не может определить его. Фрагмент кода не виден другим фрагментам (isDefined() == false), поэтому на него нельзя ссылаться и его нельзя выполнить.
Фрагмент кода будет обновляться при изменении зависимых от него фрагментов (isActive() == true); его состояние может стать VALID, RECOVERABLE_DEFINED, DROPPED или OVERWRITTEN.
Примечание: и RECOVERABLE_DEFINED, и RECOVERABLE_NOT_DEFINED указывают на потенциально устранимые ошибки; они различаются тем, что в случае RECOVERABLE_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;. Такое Status может иметь только PersistentSnippet. Фрагмент кода не виден другим фрагментам (isDefined() == false), поэтому на него нельзя ссылаться и его нельзя выполнить.
Фрагмент кода не будет обновляться при изменении зависимых от него фрагментов (isActive() == false); его Status больше никогда не изменится.
REJECTED
public static final Snippet.Status REJECTED
Фрагмент кода не виден другим фрагментам (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()
- Возвращает:
- массив, содержащий константы этого класса перечисления в порядке их объявления
valueOf
public static Snippet.Status valueOf(String name)
- Параметры:
-
name— имя возвращаемой константы перечисления. - Возвращает:
- константу перечисления с указанным именем
- Выбрасывает:
-
IllegalArgumentException— если в этом классе перечисления нет константы с указанным именем -
NullPointerException— если аргумент равен null
isActive
public boolean isActive()
JShell.eval(String) или JShell.drop(Snippet), способного изменить его состояние. Это понятие шире, чем isDefined(), поскольку фрагмент кода в состоянии RECOVERABLE_NOT_DEFINED будет обновлён.- Возвращает:
-
true, если фрагмент кода активен; в противном случае —false
isDefined
public boolean isDefined()
- Возвращает:
-
true, если фрагмент кода определён; в противном случае —false
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/jdk.jshell/jdk/jshell/Snippet.Status.html