Spec-Zone.ru › OpenJDK 27

Интерфейс CodeModel

Все суперинтерфейсы:
AttributedElement, ClassFileElement, CompoundElement<CodeElement>, Iterable<CodeElement>, MethodElement
Все известные подинтерфейсы:
CodeAttribute
public sealed interface CodeModel extends CompoundElement<CodeElement>, AttributedElement, MethodElement permits CodeAttribute (not exhaustive)
Моделирует тело метода (атрибут Code). Атрибут Code рассматривается как композиция элементов CodeElement, которые являются единственным способом доступа к Instruction; порядок элементов модели кода имеет значение.

Объект CodeModel получают с помощью MethodModel.code() или при обходе элементов-членов метода.

Основной способ создания моделей кода — MethodBuilder.withCode(Consumer). MethodBuilder.transformCode(CodeModel, CodeTransform) и CodeBuilder.transforming(CodeTransform, Consumer) позволяют создавать новые атрибуты Code, выборочно обрабатывая исходные элементы кода и передавая результаты построителю кода.

Атрибут Code содержит атрибуты, но обычно они не являются элементами-членами, а разлагаются на PseudoInstruction, доступные в соответствии с параметрами ClassFile.DeadLabelsOption, ClassFile.DebugElementsOption и ClassFile.LineNumbersOption. StackMapTableAttribute доступен только через явное чтение атрибутов, поскольку считается производным свойством тела кода.

См. Спецификацию виртуальной машины Java:
4.7.3 Атрибут Code
Начиная с:
24
См. также:
  • MethodModel.code()
  • CodeTransform
  • CodeAttribute

Краткое описание методов

Модификатор и тип Метод Описание
List<ExceptionCatch> exceptionHandlers()
Возвращает таблицу исключений метода.
Optional<MethodModel> parent()
Возвращает внешний метод, если он известен.

Методы, объявленные в интерфейсе AttributedElement

attributes, findAttribute, findAttributes
Модификатор и тип Метод Описание
List<Attribute<?>> attributes()
Возвращает атрибуты этой структуры.
default <T extends Attribute<T>>
Optional<T>
findAttribute(AttributeMapper<T> attr)
Находит атрибут по имени.
default <T extends Attribute<T>>
List<T>
findAttributes(AttributeMapper<T> attr)
Находит атрибуты по имени.

Методы, объявленные в интерфейсе CompoundElement

elementList, elementStream, forEach, iterator, toDebugString
Модификатор и тип Метод Описание
default List<CodeElement> elementList()
Возвращает List, содержащий все элементы-члены этого составного элемента.
default Stream<CodeElement> elementStream()
Возвращает Stream, содержащий все элементы-члены этого составного элемента.
void forEach(Consumer<? super CodeElement> consumer)
Вызывает предоставленный обработчик для каждого элемента-члена этого составного элемента.
default Iterator<CodeElement> iterator()
Возвращает Iterator, описывающий все элементы-члены этого составного элемента.
default String toDebugString()
Возвращает текстовое представление составного элемента и его содержимого для отладки.

Методы, объявленные в интерфейсе Iterable

spliterator
Модификатор и тип Метод Описание
default Spliterator<CodeElement> spliterator()
Создает Spliterator для элементов, описываемых этим Iterable.

Подробное описание методов

parent

Optional<MethodModel> parent()
Возвращает внешний метод, если он известен.
Возвращает:
внешний метод, если он известен

exceptionHandlers

List<ExceptionCatch> exceptionHandlers()
Возвращает таблицу исключений метода. Таблица исключений также моделируется элементами ExceptionCatch в потоковом представлении.
Возвращает:
таблицу исключений метода

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