Spec-Zone.ru › OpenJDK 25

Interface ClassBuilder

All Superinterfaces:
ClassFileBuilder<ClassElement, ClassBuilder>, Consumer<ClassElement>
public sealed interface ClassBuilder extends ClassFileBuilder<ClassElement, ClassBuilder>
A builder for a class file. ClassFile provides different build methods that accept handlers to configure such a builder; ClassFile.build(ClassDesc, Consumer) suffices for basic usage, while ClassFile.build(ClassEntry, ConstantPoolBuilder, Consumer) allows fine-grained control over the constant pool.

Refer to ClassFileBuilder for general guidance and caution around the use of builders for structures in the class file format.

Since:
24
See Also:
  • ClassFile.build(ClassEntry, ConstantPoolBuilder, Consumer)
  • ClassModel
  • ClassTransform

Method Summary

Modifier and Type Method Description
ClassBuilder transformField(FieldModel field, FieldTransform transform)
Adds a field by transforming a field from another class.
ClassBuilder transformMethod(MethodModel method, MethodTransform transform)
Adds a method by transforming a method from another class.
default ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, int flags)
Adds a field, with only access flags.
ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)
Adds a field.
default ClassBuilder withField(String name, ClassDesc descriptor, int flags)
Adds a field, with only access flags.
default ClassBuilder withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler)
Adds a field.
default ClassBuilder withFlags(int flags)
Sets the access flags of this class.
default ClassBuilder withFlags(AccessFlag... flags)
Sets the access flags of this class.
default ClassBuilder withInterfaces(ClassEntry... interfaces)
Sets the interfaces of this class.
default ClassBuilder withInterfaces(List<ClassEntry> interfaces)
Sets the interfaces of this class.
default ClassBuilder withInterfaceSymbols(ClassDesc... interfaces)
Sets the interfaces of this class.
default ClassBuilder withInterfaceSymbols(List<ClassDesc> interfaces)
Sets the interfaces of this class.
ClassBuilder withMethod(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Adds a method.
default ClassBuilder withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Adds a method.
default ClassBuilder withMethodBody(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Adds a method, with only access flags and a CodeModel.
default ClassBuilder withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Adds a method, with only access flags and a CodeModel.
default ClassBuilder withSuperclass(ClassEntry superclassEntry)
Sets the superclass of this class.
default ClassBuilder withSuperclass(ClassDesc desc)
Sets the superclass of this class.
default ClassBuilder withVersion(int major, int minor)
Sets the version of this class.

Methods declared in interface ClassFileBuilder

accept, constantPool, transform, with

Methods declared in interface Consumer

andThen

Method Details

withVersion

default ClassBuilder withVersion(int major, int minor)
Sets the version of this class.
Parameters:
major - the major version number
minor - the minor version number
Returns:
this builder
See Also:
  • ClassFileVersion

withFlags

default ClassBuilder withFlags(int flags)
Sets the access flags of this class.
Parameters:
flags - the access flags, as a bit mask
Returns:
this builder
See Also:
  • AccessFlags
  • AccessFlag.Location.CLASS

withFlags

default ClassBuilder withFlags(AccessFlag... flags)
Sets the access flags of this class.
Parameters:
flags - the access flags, as flag enums
Returns:
this builder
Throws:
IllegalArgumentException - if any flag cannot be applied to the AccessFlag.Location.CLASS location
See Also:
  • AccessFlags
  • AccessFlag.Location.CLASS

withSuperclass

default ClassBuilder withSuperclass(ClassEntry superclassEntry)
Sets the superclass of this class.
Parameters:
superclassEntry - the superclass
Returns:
this builder
See Also:
  • Superclass

withSuperclass

default ClassBuilder withSuperclass(ClassDesc desc)
Sets the superclass of this class.
Parameters:
desc - the superclass
Returns:
this builder
Throws:
IllegalArgumentException - if desc represents a primitive type
See Also:
  • Superclass

withInterfaces

default ClassBuilder withInterfaces(List<ClassEntry> interfaces)
Sets the interfaces of this class.
Parameters:
interfaces - the interfaces
Returns:
this builder
See Also:
  • Interfaces

withInterfaces

default ClassBuilder withInterfaces(ClassEntry... interfaces)
Sets the interfaces of this class.
Parameters:
interfaces - the interfaces
Returns:
this builder
See Also:
  • Interfaces

withInterfaceSymbols

default ClassBuilder withInterfaceSymbols(List<ClassDesc> interfaces)
Sets the interfaces of this class.
Parameters:
interfaces - the interfaces
Returns:
this builder
Throws:
IllegalArgumentException - if any element of interfaces is primitive
See Also:
  • Interfaces

withInterfaceSymbols

default ClassBuilder withInterfaceSymbols(ClassDesc... interfaces)
Sets the interfaces of this class.
Parameters:
interfaces - the interfaces
Returns:
this builder
Throws:
IllegalArgumentException - if any element of interfaces is primitive
See Also:
  • Interfaces

withField

ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)
Adds a field.
Parameters:
name - the field name
descriptor - the field descriptor string
handler - handler to supply the contents of the field
Returns:
this builder
See Also:
  • FieldModel

withField

default ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, int flags)
Adds a field, with only access flags.
Parameters:
name - the field name
descriptor - the field descriptor string
flags - the access flags for this field, as a bit mask
Returns:
this builder
See Also:
  • FieldModel
  • FieldBuilder.withFlags(int)

withField

default ClassBuilder withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler)
Adds a field.
Parameters:
name - the field name
descriptor - the symbolic field descriptor
handler - handler to supply the contents of the field
Returns:
this builder
See Also:
  • FieldModel

withField

default ClassBuilder withField(String name, ClassDesc descriptor, int flags)
Adds a field, with only access flags.
Parameters:
name - the field name
descriptor - the symbolic field descriptor
flags - the access flags for this field, as a bit mask
Returns:
this builder
See Also:
  • FieldModel
  • FieldBuilder.withFlags(int)

transformField

ClassBuilder transformField(FieldModel field, FieldTransform transform)
Adds a field by transforming a field from another class.

This method behaves as if:

withField(field.fieldName(), field.fieldType(),
          fb -> fb.transform(field, transform))
Parameters:
field - the field to be transformed
transform - the transform to apply to the field
Returns:
this builder
See Also:
  • FieldTransform

withMethod

ClassBuilder withMethod(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Adds a method. The bit for ACC_STATIC flag cannot be modified by the handler later, and must be set through methodFlags.
Parameters:
name - the method name
descriptor - the method descriptor
methodFlags - the access flags as a bit mask, with the ACC_STATIC bit definitely set
handler - handler to supply the contents of the method
Returns:
this builder
See Also:
  • MethodModel

withMethodBody

default ClassBuilder withMethodBody(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Adds a method, with only access flags and a CodeModel. The bit for ACC_STATIC flag cannot be modified by the handler later, and must be set through methodFlags.

This method behaves as if:

withMethod(name, descriptor, methodFlags, mb -> mb.withCode(handler))
Parameters:
name - the method name
descriptor - the method descriptor
methodFlags - the access flags as a bit mask, with the ACC_STATIC bit definitely set
handler - handler to supply the contents of the method body
Returns:
this builder
See Also:
  • MethodModel

withMethod

default ClassBuilder withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilder> handler)
Adds a method. The bit for ACC_STATIC flag cannot be modified by the handler, and must be set through methodFlags.
Parameters:
name - the method name
descriptor - the method descriptor
methodFlags - the access flags as a bit mask, with the ACC_STATIC bit definitely set
handler - handler to supply the contents of the method
Returns:
this builder
See Also:
  • MethodModel

withMethodBody

default ClassBuilder withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilder> handler)
Adds a method, with only access flags and a CodeModel. The bit for ACC_STATIC flag cannot be modified by the handler, and must be set through methodFlags.

This method behaves as if:

withMethod(name, descriptor, methodFlags, mb -> mb.withCode(handler))
Parameters:
name - the method name
descriptor - the method descriptor
methodFlags - the access flags as a bit mask, with the ACC_STATIC bit definitely set
handler - handler to supply the contents of the method body
Returns:
this builder
See Also:
  • MethodModel

transformMethod

ClassBuilder transformMethod(MethodModel method, MethodTransform transform)
Adds a method by transforming a method from another class. The transform cannot modify the ACC_STATIC flag of the original method.

This method behaves as if:

withMethod(method.methodName(), method.methodType(), method.flags().flagMask(),
           mb -> mb.transform(method, transform))
Parameters:
method - the method to be transformed
transform - the transform to apply to the method
Returns:
this builder
See Also:
  • MethodTransform

Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2025, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.

© 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