Spec-Zone.ru › OpenJDK 25

Интерфейс 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

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

andThen

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

withVersion

default ClassBuilder withVersion(int major, int minor)
Задает версию этого класса.
Параметры:
major — номер старшей версии
minor — номер младшей версии
Возвращает:
этот построитель
См. также:
  • ClassFileVersion

withFlags

default ClassBuilder withFlags(int flags)
Задает флаги доступа этого класса.
Параметры:
flags — флаги доступа в виде битовой маски
Возвращает:
этот построитель
См. также:
  • 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 — интерфейсы
Возвращает:
этот построитель
См. также:
  • Interfaces

withInterfaces

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

withInterfaceSymbols

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

withInterfaceSymbols

default ClassBuilder withInterfaceSymbols(ClassDesc... interfaces)
Задает интерфейсы этого класса.
Параметры:
interfaces — интерфейсы
Возвращает:
этот построитель
Вызывает исключение:
IllegalArgumentException — если какой-либо элемент interfaces является примитивным типом
См. также:
  • 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 — флаги доступа для этого поля в виде битовой маски
Возвращает:
этот построитель
См. также:
  • 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 — флаги доступа для этого поля в виде битовой маски
Возвращает:
этот построитель
См. также:
  • 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 — обработчик для задания содержимого метода
Возвращает:
этот построитель
См. также:
  • 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 — обработчик для задания содержимого тела метода
Возвращает:
этот построитель
См. также:
  • 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 — обработчик для задания содержимого метода
Возвращает:
этот построитель
См. также:
  • 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 — обработчик для задания содержимого тела метода
Возвращает:
этот построитель
См. также:
  • 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/ClassBuilder.html

Spec-Zone.ru

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