Spec-Zone.ru › OpenJDK 24

Класс перечисления 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. Исполняемый фрагмент кода может быть выполнен только в состоянии VALID Status.

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

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

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

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

clone, compareTo, describeConstable, 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()
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления.
Возвращает:
массив, содержащий константы этого класса перечисления в порядке их объявления

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, 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://download.java.net/java/early_access/jdk24/docs/api/jdk.jshell/jdk/jshell/Snippet.Status.html

Spec-Zone.ru

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