Spec-Zone.ru › OpenJDK 24

Интерфейс ClassFileBuilder<E extends ClassFileElement, B extends ClassFileBuilder<E,B>>

Type Parameters:
E - тип элемента члена
B - тип самого этого билдера
Все суперинтерфейсы:
Consumer<E>
Все известные подинтерфейсы:
ClassBuilder, CodeBuilder, CodeBuilder.BlockCodeBuilder, FieldBuilder, MethodBuilder
public sealed interface ClassFileBuilder<E extends ClassFileElement, B extends ClassFileBuilder<E,B>> extends Consumer<E> permits ClassBuilder, FieldBuilder, MethodBuilder, CodeBuilder
Билдер для CompoundElement, который принимает элементы-члены для интеграции в построенную структуру. Билдеры обычно передаются в качестве аргумента обработчикам Consumer, например, в ClassFile.build(ClassDesc, Consumer). Обработчики должны передавать элементы билдеру, аналогично тому, как CompoundElement обходит свои элементы-члены.

Основной способ, которым билдер принимает элементы, — через with(E), который поддерживает цепочку вызовов. Конкретные подтипы билдеров обычно определяют дополнительные методы для непосредственного определения элементов в билдере, такие как ClassBuilder.withFlags(int) или CodeBuilder.aload(int).

Способность элемента-члена появляться несколько раз в структуре соединения влияет на поведение элемента в ClassFileBuilder. Если элемент может появляться не более одного раза, но несколько экземпляров предоставлены ClassFileBuilder, последний предоставленный экземпляр появляется в построенной структуре. Если элемент появляется ровно один раз, но ни один экземпляр не предоставлен, в этой структуре может использоваться элемент неопределенного значения по умолчанию.

Из-за ограничений формата файла class некоторые элементы-члены, которые могут быть смоделированы API, не могут быть представлены в построенной структуре в определенных обстоятельствах. Передача таких элементов билдеру вызывает IllegalArgumentException. Некоторые ClassFile.Option контролируют, следует ли изменять или удалять такие элементы для создания допустимых файлов class.

Граф иерархии запечатанного класса:
Sealed class hierarchy graph for ClassFileBuilderSealed class hierarchy graph for ClassFileBuilder
С:
24
См. также:
  • CompoundElement
  • ClassFileTransform

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

Модификатор и тип Метод Описание
default void accept(E e)
Интегрирует элемент-член в структуру, которая строится.
ConstantPoolBuilder constantPool()
Возвращает билдер пула констант, связанный с этим билдером.
default B transform(CompoundElement<E> model, ClassFileTransform<?,E,B> transform)
Применяет преобразование к структуре соединения, направляя результаты к этому билдеру.
B with(E e)
Интегрирует элемент-член в структуру, которая строится.

Методы, объявленные в интерфейсе java.util.function.Consumer

andThen

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

accept

default void accept(E e)
Интегрирует элемент-член в структуру, которая строится.
Задано:
accept в интерфейсе Consumer<E extends ClassFileElement>
Примечание API:
Этот метод существует для реализации Consumer; пользователи могут использовать with(E) для цепочки вызовов.
Параметры:
e - элемент-член
Исключения:
IllegalArgumentException - если элемент-член не может быть представлен в формате файла class

with

B with(E e)
Интегрирует элемент-член в структуру, которая строится.
Параметры:
e - элемент-член
Возвращает:
этот билдер
Исключения:
IllegalArgumentException - если элемент-член не может быть представлен в формате файла class

constantPool

ConstantPoolBuilder constantPool()
Возвращает билдер пула констант, связанный с этим билдером.
Возвращает:
билдер пула констант, связанный с этим билдером

transform

default B transform(CompoundElement<E> model, ClassFileTransform<?,E,B> transform)
Применяет преобразование к структуре соединения, направляя результаты к этому билдеру.

Преобразование получит каждый элемент структуры соединения, а также этот билдер для построения структуры. Преобразование свободно сохранять, удалять или заменять элементы по своему усмотрению.

Билдер может запускать несколько преобразований над различными структурами соединения, интегрируя элементы-члены разного происхождения.

Примечание API:
Многие подинтерфейсы имеют методы, такие как ClassBuilder.transformMethod(java.lang.classfile.MethodModel, java.lang.classfile.MethodTransform) или MethodBuilder.transformCode(java.lang.classfile.CodeModel, java.lang.classfile.CodeTransform). Однако их вызов принципиально отличается от вызова этого метода: эти методы вызывают transform в дочерних билдерах, а не в себе. Например, classBuilder.transformMethod вызывает methodBuilder.transform с новым билдером метода, а не вызывает classBuilder.transform в себе.
Параметры:
model - структура для преобразования
transform - применяемое преобразование
Возвращает:
этот билдер
См. также:
  • ClassFileTransform

© 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/java.base/java/lang/classfile/ClassFileBuilder.html

Spec-Zone.ru

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