Spec-Zone.ru › OpenJDK 27

Интерфейс ClassBuilder

Все суперинтерфейсы:
ClassFileBuilder<ClassElement, ClassBuilder>, Consumer<ClassElement>
public sealed interface ClassBuilder extends ClassFileBuilder<ClassElement, ClassBuilder>
Построитель для файла class. ClassFile предоставляет различные методы build, принимающие обработчики для настройки такого построителя; для базового использования достаточно ClassFile.build(ClassDesc, Consumer), а ClassFile.build(ClassEntry, ConstantPoolBuilder, Consumer) обеспечивает точный контроль над пулом констант.

Общие рекомендации и предупреждения относительно использования построителей для структур в формате файлов class см. в ClassFileBuilder.

Начиная с версии:
24
См. также:
  • ClassFile.build(ClassEntry, ConstantPoolBuilder, Consumer)
  • ClassModel
  • ClassTransform

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

Модификатор и тип Метод Описание
ClassBuilder transformField(FieldModel field, FieldTransform transform)
Добавляет поле, преобразуя поле из другого класса.
ClassBuilder transformMethod(MethodModel method, MethodTransform transform)
Добавляет метод, преобразуя метод из другого класса.
default ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, int flags)
Добавляет поле, задавая только флаги доступа.
ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)
Добавляет поле.
default ClassBuilder withField(String name, ClassDesc descriptor, int flags)
Добавляет поле, задавая только флаги доступа.
default ClassBuilder withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler)
Добавляет поле.
default ClassBuilder withFlags(int flags)
Задает флаги доступа этого класса.
default ClassBuilder withFlags(AccessFlag... flags)
Задает флаги доступа этого класса.
default ClassBuilder withInterfaces(ClassEntry... interfaces)
Задает интерфейсы этого класса.
default ClassBuilder withInterfaces(List<ClassEntry> interfaces)
Задает интерфейсы этого класса.
default ClassBuilder withInterfaceSymbols(ClassDesc... interfaces)
Задает интерфейсы этого класса.
default ClassBuilder withInterfaceSymbols(List<ClassDesc> interfaces)
Задает интерфейсы этого класса.
ClassBuilder withMethod(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Добавляет метод.
default ClassBuilder withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Добавляет метод.
default ClassBuilder withMethodBody(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Добавляет метод, задавая только флаги доступа и CodeModel.
default ClassBuilder withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Добавляет метод, задавая только флаги доступа и CodeModel.
default ClassBuilder withSuperclass(ClassEntry superclassEntry)
Задает суперкласс этого класса.
default ClassBuilder withSuperclass(ClassDesc desc)
Задает суперкласс этого класса.
default ClassBuilder withVersion(int major, int minor)
Задает версию этого класса.

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

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

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

andThen
Модификатор и тип Метод Описание
default Consumer<ClassElement> andThen(Consumer<? super ClassElement> after)
Возвращает составной Consumer, который последовательно выполняет эту операцию, а затем операцию after.

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

withVersion

default ClassBuilder withVersion(int major, int minor)
Задает версию этого класса.
Параметры:
major — номер основной версии
minor — номер дополнительной версии
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если major или minor не является u2; minor может быть -1, чтобы указать 65535
См. также:
  • ClassFileVersion

withFlags

default ClassBuilder withFlags(int flags)
Задает флаги доступа этого класса.
Параметры:
flags — флаги доступа в виде битовой маски
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если flags не является u2
См. также:
  • AccessFlags
  • AccessFlag.Location.CLASS

withFlags

default ClassBuilder withFlags(AccessFlag... flags)
Задает флаги доступа этого класса.
Параметры:
flags — флаги доступа в виде перечислений флагов
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если какой-либо флаг нельзя применить к расположению AccessFlag.Location.CLASS
См. также:
  • AccessFlags
  • AccessFlag.Location.CLASS

withSuperclass

default ClassBuilder withSuperclass(ClassEntry superclassEntry)
Задает суперкласс этого класса.
Параметры:
superclassEntry — суперкласс
Возвращает:
этот построитель
См. также:
  • Superclass

withSuperclass

default ClassBuilder withSuperclass(ClassDesc desc)
Задает суперкласс этого класса.
Параметры:
desc — суперкласс
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если desc представляет примитивный тип
См. также:
  • Superclass

withInterfaces

default ClassBuilder withInterfaces(List<ClassEntry> interfaces)
Задает интерфейсы этого класса.
Параметры:
interfaces — интерфейсы
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если количество интерфейсов превышает предел u2
См. также:
  • Interfaces

withInterfaces

default ClassBuilder withInterfaces(ClassEntry... interfaces)
Задает интерфейсы этого класса.
Параметры:
interfaces — интерфейсы
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если количество интерфейсов превышает предел u2
См. также:
  • Interfaces

withInterfaceSymbols

default ClassBuilder withInterfaceSymbols(List<ClassDesc> interfaces)
Задает интерфейсы этого класса.
Параметры:
interfaces — интерфейсы
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если какой-либо элемент interfaces является примитивным типом или количество интерфейсов превышает предел u2
См. также:
  • Interfaces

withInterfaceSymbols

default ClassBuilder withInterfaceSymbols(ClassDesc... interfaces)
Задает интерфейсы этого класса.
Параметры:
interfaces — интерфейсы
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если какой-либо элемент interfaces является примитивным типом или количество интерфейсов превышает предел u2
См. также:
  • Interfaces

withField

ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)
Добавляет поле.
Параметры:
name — имя поля
descriptor — строка дескриптора поля
handler — обработчик для задания содержимого поля
Возвращает:
этот построитель
См. также:
  • FieldModel

withField

default ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, int flags)
Добавляет поле, задавая только флаги доступа.
Параметры:
name — имя поля
descriptor — строка дескриптора поля
flags — флаги доступа для этого поля в виде битовой маски
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если flags не является u2
См. также:
  • FieldModel
  • FieldBuilder.withFlags(int)

withField

default ClassBuilder withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler)
Добавляет поле.
Параметры:
name — имя поля
descriptor — символьный дескриптор поля
handler — обработчик для задания содержимого поля
Возвращает:
этот построитель
См. также:
  • FieldModel

withField

default ClassBuilder withField(String name, ClassDesc descriptor, int flags)
Добавляет поле, задавая только флаги доступа.
Параметры:
name — имя поля
descriptor — символьный дескриптор поля
flags — флаги доступа для этого поля в виде битовой маски
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если flags не является u2
См. также:
  • FieldModel
  • FieldBuilder.withFlags(int)

transformField

ClassBuilder transformField(FieldModel field, FieldTransform transform)
Добавляет поле, преобразуя поле из другого класса.

Этот метод действует так, как если бы выполнялся следующий код:

withField(field.fieldName(), field.fieldType(),
          fb -> fb.transform(field, transform))
Параметры:
field — поле, которое нужно преобразовать
transform — преобразование, применяемое к полю
Возвращает:
этот построитель
См. также:
  • FieldTransform

withMethod

ClassBuilder withMethod(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Добавляет метод. Бит флага ACC_STATIC не может быть изменен последующим handler и должен быть задан с помощью methodFlags.
Параметры:
name — имя метода
descriptor — дескриптор метода
methodFlags — флаги доступа в виде битовой маски, в которой бит ACC_STATIC обязательно установлен
handler — обработчик для задания содержимого метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если methodFlags не является u2
См. также:
  • MethodModel

withMethodBody

default ClassBuilder withMethodBody(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Добавляет метод, задавая только флаги доступа и CodeModel. Бит флага ACC_STATIC не может быть изменен последующим handler и должен быть задан с помощью methodFlags.

Этот метод действует так, как если бы выполнялся следующий код:

withMethod(name, descriptor, methodFlags, mb -> mb.withCode(handler))
Параметры:
name — имя метода
descriptor — дескриптор метода
methodFlags — флаги доступа в виде битовой маски, в которой бит ACC_STATIC обязательно установлен
handler — обработчик для задания содержимого тела метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если methodFlags не является u2
См. также:
  • MethodModel

withMethod

default ClassBuilder withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Добавляет метод. Бит флага ACC_STATIC не может быть изменен с помощью handler и должен быть задан с помощью methodFlags.
Параметры:
name — имя метода
descriptor — дескриптор метода
methodFlags — флаги доступа в виде битовой маски, в которой бит ACC_STATIC обязательно установлен
handler — обработчик для задания содержимого метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если methodFlags не является u2
См. также:
  • MethodModel

withMethodBody

default ClassBuilder withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Добавляет метод, задавая только флаги доступа и CodeModel. Бит флага ACC_STATIC не может быть изменен с помощью handler и должен быть задан с помощью methodFlags.

Этот метод действует так, как если бы выполнялся следующий код:

withMethod(name, descriptor, methodFlags, mb -> mb.withCode(handler))
Параметры:
name — имя метода
descriptor — дескриптор метода
methodFlags — флаги доступа в виде битовой маски, в которой бит ACC_STATIC обязательно установлен
handler — обработчик для задания содержимого тела метода
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если methodFlags не является u2
См. также:
  • MethodModel

transformMethod

ClassBuilder transformMethod(MethodModel method, MethodTransform transform)
Добавляет метод, преобразуя метод из другого класса. Преобразование не может изменить флаг ACC_STATIC исходного метода.

Этот метод действует так, как если бы выполнялся следующий код:

withMethod(method.methodName(), method.methodType(), method.flags().flagMask(),
           mb -> mb.transform(method, transform))
Параметры:
method — метод, который нужно преобразовать
transform — преобразование, применяемое к методу
Возвращает:
этот построитель
См. также:
  • MethodTransform

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