Spec-Zone.ru › OpenJDK 24

Интерфейс 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) позволяет тонко контролировать пул констант.

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

С:
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)
Устанавливает версию этого класса.

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

accept, constantPool, transform, with

Методы, объявленные в интерфейсе java.util.function.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.
Parameters:
name - имя метода
descriptor - описание метода
methodFlags - флаги доступа в виде битовой маски, с битом ACC_STATIC обязательно установленным
handler - обработчик для задания содержимого метода
Returns:
этот билдер
See Also:
  • 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))
Parameters:
name - имя метода
descriptor - описание метода
methodFlags - флаги доступа в виде битовой маски, с битом ACC_STATIC обязательно установленным
handler - обработчик для задания содержимого тела метода
Returns:
этот билдер
See Also:
  • MethodModel

transformMethod

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

Этот метод ведет себя так, как если бы:

withMethod(method.methodName(), method.methodType(), method.flags().flagMask(),
           mb -> mb.transform(method, transform))
Parameters:
method - преобразуемый метод
transform - преобразование, которое нужно применить к методу
Returns:
этот билдер
See Also:
  • MethodTransform

© 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/ClassBuilder.html

Spec-Zone.ru

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