Spec-Zone.ru › OpenJDK 25

Перечисление класса Snippet.Status

java.lang.Object
java.lang.Enum<Snippet.Status>
jdk.jshell.Snippet.Status
Все реализуемые интерфейсы:
Serializable, Comparable<Snippet.Status>, Constable
Внешний класс:
Snippet
public static enum Snippet.Status extends Enum<Snippet.Status>
Описывает текущее состояние фрагмента кода (Snippet). Это динамическое свойство фрагмента кода в состоянии JShell, поэтому его можно получить с помощью запроса к JShell.

Status меняется при изменении состояния. Например, создание другого фрагмента с помощью eval может разрешить зависимости этого фрагмента (или сделать их недействительными) либо заменить этот фрагмент, изменив его Status.

Важные свойства, связанные с Status: isDefined() — виден ли он другим существующим и новым фрагментам; и isActive() — будет ли фрагмент обновляться при изменении состояния JShell, что может изменить Status. Выполняемый фрагмент кода можно выполнить, только если он находится в Status VALID.

С момента:
9
См. также:
  • JShell.status(jdk.jshell.Snippet)

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе 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(String name)
Возвращает константу перечисления этого класса с указанным именем.
static Snippet.Status[] values()
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления.

Методы, объявленные в классе Enum

clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

Методы, объявленные в классе 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). Такое 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
Фрагмент кода неактивен, поскольку при первоначальной оценке не прошёл компиляцию и не может стать корректным при дальнейших изменениях состояния 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()
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления.
Возвращает:
массив, содержащий константы этого класса перечисления в порядке их объявления

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API