Spec-Zone.ru › OpenJDK 21

Перечисление 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.

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

valueOf

public static Snippet.Status valueOf(String name)
Возвращает константу перечисления этого класса с указанным именем. Строка должна точно соответствовать идентификатору, используемому для объявления константы перечисления в этом классе. (Дополнительные пробелы не допускаются.)
Parameters:
name - имя возвращаемой константы перечисления.
Returns:
константа перечисления с указанным именем
Throws:
IllegalArgumentException - если в этом классе перечисления нет константы с указанным именем
NullPointerException - если аргумент равен null

isActive

public boolean isActive()
Указывает, активен ли фрагмент, то есть будет ли переоцениваться фрагмент постоянный при вызове нового JShell.eval(String) или JShell.drop(Snippet), которые могут изменить его состояние. Это более широкое понятие, чем isDefined(), так как фрагмент, который RECOVERABLE_NOT_DEFINED будет обновлён.
Returns:
true если фрагмент активен; в противном случае false

isDefined

public boolean isDefined()
Указывает, является ли фрагмент в настоящее время частью определённого состояния JShell. Виден ли он для компиляции других фрагментов?
Returns:
true если фрагмент определён; в противном случае false

© 1993, 2023, 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/21/docs/api/jdk.jshell/jdk/jshell/Snippet.Status.html

Spec-Zone.ru

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