Spec-Zone.ru › OpenJDK 27

Перечисление 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>
Описывает текущее состояние фрагмента кода. Это динамическое свойство фрагмента кода в состоянии JShell — его можно получить с помощью запроса к JShell.

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

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

Начиная с:
9
См. также:
  • JShell.status(jdk.jshell.Snippet)

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

Вложенные классы и интерфейсы, объявленные в классе Enum

Enum.EnumDesc<E>
Модификатор и тип Класс Описание
static final class  Enum.EnumDesc<E extends Enum<E>>
Номинальный дескриптор константы enum.

Краткое описание констант перечисления

Константа перечисления Описание
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
Модификатор и тип Метод Описание
protected final Object clone()
Выбрасывает CloneNotSupportedException.
final int compareTo(Snippet.Status o)
Сравнивает это перечисление с указанным объектом, определяя порядок.
final Optional<Enum.EnumDesc<Snippet.Status>> describeConstable()
Возвращает дескриптор перечисления EnumDesc для этого экземпляра, если его можно создать, или пустой Optional, если создать его нельзя.
final boolean equals(Object other)
Возвращает true, если указанный объект равен этой константе перечисления.
protected final void finalize()
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и планируется к удалению.
final Class<Snippet.Status> getDeclaringClass()
Возвращает объект Class, соответствующий типу перечисления этой константы перечисления.
final int hashCode()
Возвращает хеш-код этой константы перечисления.
final String name()
Возвращает имя этой константы перечисления в точности так, как оно указано в объявлении перечисления.
final int ordinal()
Возвращает порядковый номер этой константы перечисления (её позицию в объявлении перечисления, где первой константе присваивается порядковый номер ноль).
String toString()
Возвращает имя этой константы перечисления, указанное в объявлении.
static <T extends Enum<T>>
T
valueOf(Class<T> enumClass, String name)
Возвращает константу указанного класса-перечисления с указанным именем.

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

getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Подробное описание констант перечисления

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, 2026, 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.

Spec-Zone.ru

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