Класс перечисления 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. Выполняемый фрагмент кода может быть выполнен только если он находится в состоянии VALID Status.
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе java.lang.Enum
Enum.EnumDesc<E extends Enum<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 состояния). Только DeclarationSnippet может иметь этот Status. Фрагмент имеет допустимую сигнатуру и виден другим фрагментам (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 состояния). Только DeclarationSnippet может иметь этот Status. Фрагмент имеет недопустимую сигнатуру или реализация не может его определить. Фрагмент не виден другим фрагментам (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;. Только PersistentSnippet может иметь этот Status. Фрагмент не виден другим фрагментам (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, 2021, 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/17/docs/api/jdk.jshell/jdk/jshell/Snippet.Status.html