Spec-Zone.ru › OpenJDK 27

Класс перечисления ClassFile.StackMapsOption

java.lang.Object
java.lang.Enum<ClassFile.StackMapsOption>
java.lang.classfile.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
См. также:
  • StackMapTableAttribute
  • ClassFile.DeadCodeOption

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

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

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

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

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

STACK_MAPS_WHEN_REQUIRED

public static final ClassFile.StackMapsOption STACK_MAPS_WHEN_REQUIRED
Генерировать карты стека или повторно использовать существующие, если они совместимы. Карты стека присутствуют в основных версиях 50 и выше. Для этих версий 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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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