Enum Snippet.Status
- java.lang.Object
-
- java.lang.Enum<Snippet.Status>
-
- jdk.jshell.Snippet.Status
- Все реализованные интерфейсы:
-
Serializable,Comparable<Snippet.Status>
- Окружающий класс:
- Snippet
public static enum Snippet.Status extends Enum<Snippet.Status>
Описывает текущее состояние фрагмента кода. Это динамическое свойство фрагмента кода в состоянии JShell — поэтому его извлекают с помощью запроса к {@code JShell}.
Это свойство меняется по мере изменения состояния. Например, создание другого фрагмента кода с помощью eval может разрешить зависимости этого фрагмента кода (или сделать эти зависимости недействительными), или заменить этот фрагмент кода, изменяя его Status.
Важные свойства, связанные с Status: isDefined(), если он виден другим существующим и новым фрагментам кода; и isActive(), если по мере изменения состояния JShell фрагмент кода будет обновляться, возможно, изменяя Status. Исполняемый фрагмент кода может быть выполнен только если он находится в состоянии VALID Status.
- См. также:
JShell.status(jdk.jshell.Snippet)
Постоянные значения перечисления
| Постоянное значение перечисления | Описание |
|---|---|
DROPPED | Фрагмент кода неактивен из-за явного вызова |
NONEXISTENT | Фрагмент кода неактивен, потому что он еще не существует. |
OVERWRITTEN | Фрагмент кода неактивен, потому что он был заменен новым фрагментом кода. |
RECOVERABLE_DEFINED | Фрагмент кода — это фрагмент объявления с потенциально восстанавливаемыми неразрешенными ссылками или другими проблемами в его теле (в контексте текущего |
RECOVERABLE_NOT_DEFINED | Фрагмент кода — это фрагмент объявления с потенциально восстанавливаемыми неразрешенными ссылками или другими проблемами (в контексте текущего |
REJECTED | Фрагмент кода неактивен, так как при первоначальной оценке произошла ошибка компиляции, и он не может стать действительным при последующих изменениях состояния JShell. |
VALID | Фрагмент кода является допустимым (в контексте текущего |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean | isActive() | Указывает, активен ли фрагмент кода, то есть будет ли постоянный фрагмент кода повторно оценен, когда вызывается новый |
boolean | isDefined() | Указывает, является ли фрагмент кода в данный момент частью определенного состояния JShell. |
static Snippet.Status | valueOf(String name) | Возвращает константу перечисления этого типа со указанным именем. |
static Snippet.Status[] | values() | Возвращает массив, содержащий константы этого типа перечисления в порядке их объявления. |
Методы, объявленные в классе java.lang.Enum
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf Методы, объявленные в классе java.lang.Object
getClass, notify, notifyAll, wait, wait, wait Постоянные значения перечисления
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
Фрагмент неактивен, потому что он не прошёл компиляцию при первом оценивании и не может стать действительным при последующих изменениях состояния 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), которые могут изменить его состояние. Это более общее понятие, чем isDefined(), так как фрагмент, который RECOVERABLE_NOT_DEFINED, будет обновляться.
- Возвращает:
-
trueесли фрагмент активен; в противном случаеfalse
isDefined
public boolean isDefined()
Указывает, является ли фрагмент в настоящее время частью определённого состояния JShell. Виден ли он для компиляции других фрагментов?
- Возвращает:
-
trueесли фрагмент определён; в противном случаеfalse
© 1993, 2020, 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/11/docs/api/jdk.jshell/jdk/jshell/Snippet.Status.html