Интерфейс 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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
ClassBuilder |
transformField |
Добавляет поле, преобразуя поле из другого класса. |
ClassBuilder |
transformMethod |
Добавляет метод, преобразуя метод из другого класса. |
default ClassBuilder |
withField |
Добавляет поле, задавая только флаги доступа. |
ClassBuilder |
withField |
Добавляет поле. |
default ClassBuilder |
withField |
Добавляет поле, задавая только флаги доступа. |
default ClassBuilder |
withField |
Добавляет поле. |
default ClassBuilder |
withFlags |
Задает флаги доступа этого класса. |
default ClassBuilder |
withFlags |
Задает флаги доступа этого класса. |
default ClassBuilder |
withInterfaces |
Задает интерфейсы этого класса. |
default ClassBuilder |
withInterfaces |
Задает интерфейсы этого класса. |
default ClassBuilder |
withInterfaceSymbols |
Задает интерфейсы этого класса. |
default ClassBuilder |
withInterfaceSymbols |
Задает интерфейсы этого класса. |
ClassBuilder |
withMethod |
Добавляет метод. |
default ClassBuilder |
withMethod |
Добавляет метод. |
default ClassBuilder |
withMethodBody |
Добавляет метод, задавая только флаги доступа и CodeModel. |
default ClassBuilder |
withMethodBody |
Добавляет метод, задавая только флаги доступа и CodeModel. |
default ClassBuilder |
withSuperclass |
Задает суперкласс этого класса. |
default ClassBuilder |
withSuperclass |
Задает суперкласс этого класса. |
default ClassBuilder |
withVersion |
Задает версию этого класса. |
Методы, объявленные в интерфейсе ClassFileBuilder
accept, constantPool, transform, with | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
accept |
Включает элемент-член в создаваемую структуру. |
ConstantPoolBuilder |
constantPool() |
Возвращает построитель пула констант, связанный с этим построителем. |
default ClassBuilder |
transform |
Применяет преобразование к составной структуре, направляя результаты этому построителю. |
ClassBuilder |
with |
Включает элемент-член в создаваемую структуру. |
Методы, объявленные в интерфейсе Consumer
andThen | Модификатор и тип | Метод | Описание |
|---|---|---|
default Consumer |
andThen |
Возвращает составной Consumer, который последовательно выполняет эту операцию, а затем операцию after. |
Подробное описание методов
withVersion
default ClassBuilder withVersion(int major, int minor)
- Параметры:
-
major— номер основной версии -
minor— номер дополнительной версии - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиmajorилиminorне являетсяu2;minorможет быть-1, чтобы указать 65535 - См. также:
withFlags
default ClassBuilder withFlags(int flags)
- Параметры:
-
flags— флаги доступа в виде битовой маски - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиflagsне являетсяu2 - См. также:
withFlags
default ClassBuilder withFlags(AccessFlag... flags)
- Параметры:
-
flags— флаги доступа в виде перечислений флагов - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если какой-либо флаг нельзя применить к расположениюAccessFlag.Location.CLASS - См. также:
withSuperclass
default ClassBuilder withSuperclass(ClassEntry superclassEntry)
- Параметры:
-
superclassEntry— суперкласс - Возвращает:
- этот построитель
- См. также:
withSuperclass
default ClassBuilder withSuperclass(ClassDesc desc)
- Параметры:
-
desc— суперкласс - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиdescпредставляет примитивный тип - См. также:
withInterfaces
default ClassBuilder withInterfaces(List<ClassEntry> interfaces)
- Параметры:
-
interfaces— интерфейсы - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если количество интерфейсов превышает пределu2 - См. также:
withInterfaces
default ClassBuilder withInterfaces(ClassEntry... interfaces)
- Параметры:
-
interfaces— интерфейсы - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если количество интерфейсов превышает пределu2 - См. также:
withInterfaceSymbols
default ClassBuilder withInterfaceSymbols(List<ClassDesc> interfaces)
- Параметры:
-
interfaces— интерфейсы - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если какой-либо элементinterfacesявляется примитивным типом или количество интерфейсов превышает пределu2 - См. также:
withInterfaceSymbols
default ClassBuilder withInterfaceSymbols(ClassDesc... interfaces)
- Параметры:
-
interfaces— интерфейсы - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— если какой-либо элементinterfacesявляется примитивным типом или количество интерфейсов превышает пределu2 - См. также:
withField
ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)
- Параметры:
-
name— имя поля -
descriptor— строка дескриптора поля -
handler— обработчик для задания содержимого поля - Возвращает:
- этот построитель
- См. также:
withField
default ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, int flags)
- Параметры:
-
name— имя поля -
descriptor— строка дескриптора поля -
flags— флаги доступа для этого поля в виде битовой маски - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиflagsне являетсяu2 - См. также:
withField
default ClassBuilder withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler)
- Параметры:
-
name— имя поля -
descriptor— символьный дескриптор поля -
handler— обработчик для задания содержимого поля - Возвращает:
- этот построитель
- См. также:
withField
default ClassBuilder withField(String name, ClassDesc descriptor, int flags)
- Параметры:
-
name— имя поля -
descriptor— символьный дескриптор поля -
flags— флаги доступа для этого поля в виде битовой маски - Возвращает:
- этот построитель
- Вызывает исключение:
-
IllegalArgumentException— еслиflagsне являетсяu2 - См. также:
transformField
ClassBuilder transformField(FieldModel field, FieldTransform transform)
Этот метод действует так, как если бы выполнялся следующий код:
- Параметры:
-
field— поле, которое нужно преобразовать -
transform— преобразование, применяемое к полю - Возвращает:
- этот построитель
- См. также:
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 - См. также:
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 - См. также:
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 - См. также:
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 - См. также:
transformMethod
ClassBuilder transformMethod(MethodModel method, MethodTransform transform)
ACC_STATIC исходного метода. Этот метод действует так, как если бы выполнялся следующий код:
withMethod(method.methodName(), method.methodType(), method.flags().flagMask(),
mb -> mb.transform(method, transform))
- Параметры:
-
method— метод, который нужно преобразовать -
transform— преобразование, применяемое к методу - Возвращает:
- этот построитель
- См. также:
© 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.