Класс перечисления ClassFile.StackMapsOption
- Все реализуемые интерфейсы:
Serializable, ClassFile.Option, Comparable<ClassFile.StackMapsOption>, Constable
- Внешний интерфейс:
ClassFile
public static enum ClassFile.StackMapsOption extends Enum<ClassFile.StackMapsOption> implements ClassFile.Option
STACK_MAPS_WHEN_REQUIRED: генерировать карты стека или повторно использовать существующие, если они совместимы. StackMapTableAttribute — это производное свойство атрибута Code, позволяющее виртуальной машине Java выполнить проверку за один проход. Поэтому оно не моделируется как часть CodeModel, а вычисляется по требованию при генерации карт стека.
Генерация карт стека может завершиться ошибкой IllegalArgumentException, если присутствует недостижимый код или инструкции устаревших подпрограмм перехода. При использовании параметра DROP_STACK_MAPS пользователи могут предоставить собственные карты стека, передав StackMapTableAttribute в CodeBuilder.
- См. Спецификацию виртуальной машины Java:
- 4.10.1 Проверка посредством проверки типов
- Начиная с версии:
- 24
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в классе Enum
Enum.EnumDesc<E> | Модификатор и тип | Класс | Описание |
|---|---|---|
static final class |
Enum.EnumDesc<E extends Enum<E>> |
Номинальный дескриптор для константы enum. |
Краткое описание констант перечисления
| Константа перечисления | Описание |
|---|---|
DROP_STACK_MAPS |
Не выполнять генерацию карт стека. |
GENERATE_STACK_MAPS |
Принудительно выполнять генерацию карт стека. |
STACK_MAPS_WHEN_REQUIRED |
Генерировать карты стека или повторно использовать существующие, если они совместимы. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static ClassFile.StackMapsOption |
valueOf |
Возвращает константу перечисления этого класса с указанным именем. |
static ClassFile.StackMapsOption[] |
values() |
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления. |
Методы, объявленные в классе Enum
clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf | Модификатор и тип | Метод | Описание |
|---|---|---|
protected final Object |
clone() |
Выбрасывает CloneNotSupportedException. |
final int |
compareTo |
Сравнивает это перечисление с указанным объектом для определения порядка. |
final Optional |
describeConstable() |
Возвращает дескриптор перечисления EnumDesc для этого экземпляра, если его можно создать, или пустой Optional, если создать его нельзя. |
final boolean |
equals |
Возвращает true, если указанный объект равен этой константе перечисления. |
protected final void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Метод финализации помечен как устаревший и подлежащий удалению. |
final Class |
getDeclaringClass() |
Возвращает объект Class, соответствующий типу перечисления этой константы перечисления. |
final int |
hashCode() |
Возвращает хеш-код этой константы перечисления. |
final String |
name() |
Возвращает имя этой константы перечисления в точности в том виде, в каком оно объявлено в объявлении перечисления. |
final int |
ordinal() |
Возвращает порядковый номер этой константы перечисления (её позицию в объявлении перечисления; первой константе присваивается номер 0). |
String |
toString() |
Возвращает имя этой константы перечисления, указанное в объявлении. |
static <T extends Enum<T>> |
valueOf |
Возвращает константу указанного класса перечисления с заданным именем. |
Методы, объявленные в классе Object
getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного интервала реального времени. |
Подробное описание констант перечисления
STACK_MAPS_WHEN_REQUIRED
public static final ClassFile.StackMapsOption STACK_MAPS_WHEN_REQUIRED
CodeBuilder пытается повторно использовать информацию о совместимых картах стека, если массив кода и обработчики исключений остаются совместимыми после преобразования; в противном случае выполняется генерация карт стека. Однако при основной версии 50 немедленная ошибка не возникает, что позволяет инструкциям подпрограмм перехода, несовместимым с картами стека, присутствовать в массиве code.GENERATE_STACK_MAPS
public static final ClassFile.StackMapsOption GENERATE_STACK_MAPS
DROP_STACK_MAPS
public static final ClassFile.StackMapsOption DROP_STACK_MAPS
StackMapTableAttribute в CodeBuilder; в противном случае сгенерированный код не пройдёт проверку (JVMS §4.10.1). Этот параметр необходим для того, чтобы пользовательские StackMapTableAttribute учитывались. Карты стека существующего атрибута Code можно повторно использовать следующим образом при этом параметре:
CodeAttribute code = method.findAttribute(Attributes.code()).orElseThrow();
// Note that StackMapTable may be absent, representing code with no branching
code.findAttribute(Attributes.stackMapTable()).ifPresent(cob);
Подробное описание методов
values
public static ClassFile.StackMapsOption[] values()
- Возвращает:
- массив, содержащий константы этого класса перечисления в порядке их объявления
valueOf
public static ClassFile.StackMapsOption valueOf(String name)
- Параметры:
-
name— имя возвращаемой константы перечисления. - Возвращает:
- константу перечисления с указанным именем
- Выбрасывает:
-
IllegalArgumentException— если в этом классе перечисления нет константы с указанным именем -
NullPointerException— если аргумент равен null
© 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.