Interface ClassBuilder
- All Superinterfaces:
ClassFileBuilderPREVIEW<ClassElementPREVIEW,
,ClassBuilderPREVIEW> Consumer<ClassElementPREVIEW>
public sealed interface ClassBuilder
extends ClassFileBuilderPREVIEW<ClassElementPREVIEW,ClassBuilderPREVIEW>
ClassBuilder
is a preview API of the Java platform.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
A builder for classfiles. Builders are not created directly; they are passed
to handlers by methods such as
ClassFile.build(ClassDesc, Consumer)
PREVIEW
or to class transforms. The elements of a classfile can be specified
abstractly (by passing a ClassElement
PREVIEW to ClassFileBuilder.with(ClassFileElement)
PREVIEW)
or concretely by calling the various withXxx
methods.- Since:
- 22
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionoriginal()
Returns theClassModel
PREVIEW representing the class being transformed, if this class builder represents the transformation of someClassModel
PREVIEW.transformField
(FieldModelPREVIEW field, FieldTransformPREVIEW transform) Adds a field by transforming a field from another class.transformMethod
(MethodModelPREVIEW method, MethodTransformPREVIEW transform) Adds a method by transforming a method from another class.default ClassBuilderPREVIEW
Adds a field.withField
(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, Consumer<? super FieldBuilderPREVIEW> handler) Adds a field.default ClassBuilderPREVIEW
Adds a field.default ClassBuilderPREVIEW
Adds a field.default ClassBuilderPREVIEW
withFlags
(int flags) Sets the classfile access flags.default ClassBuilderPREVIEW
withFlags
(AccessFlag... flags) Sets the classfile access flags.default ClassBuilderPREVIEW
withInterfaces
(ClassEntryPREVIEW... interfaces) Sets the interfaces of this class.default ClassBuilderPREVIEW
withInterfaces
(List<ClassEntryPREVIEW> interfaces) Sets the interfaces of this class.default ClassBuilderPREVIEW
withInterfaceSymbols
(ClassDesc... interfaces) Sets the interfaces of this class.default ClassBuilderPREVIEW
withInterfaceSymbols
(List<ClassDesc> interfaces) Sets the interfaces of this class.withMethod
(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, int methodFlags, Consumer<? super MethodBuilderPREVIEW> handler) Adds a method.default ClassBuilderPREVIEW
withMethod
(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilderPREVIEW> handler) Adds a method.default ClassBuilderPREVIEW
withMethodBody
(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, int methodFlags, Consumer<? super CodeBuilderPREVIEW> handler) Adds a method, with only aCode
attribute.default ClassBuilderPREVIEW
withMethodBody
(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilderPREVIEW> handler) Adds a method, with only aCodeAttribute
PREVIEW.default ClassBuilderPREVIEW
withSuperclass
(ClassEntryPREVIEW superclassEntry) Sets the superclass of this class.default ClassBuilderPREVIEW
withSuperclass
(ClassDesc desc) Sets the superclass of this class.default ClassBuilderPREVIEW
withVersion
(int major, int minor) Sets the classfile version.Methods declared in interface java.lang.classfile.ClassFileBuilderPREVIEW
accept, canWriteDirect, constantPool, transform, with
-
Method Details
-
original
Optional<ClassModelPREVIEW> original()Returns theClassModel
PREVIEW representing the class being transformed, if this class builder represents the transformation of someClassModel
PREVIEW.- Returns:
- the
ClassModel
PREVIEW representing the class being transformed, if this class builder represents the transformation of someClassModel
PREVIEW
-
withVersion
Sets the classfile version.- Parameters:
major
- the major version numberminor
- the minor version number- Returns:
- this builder
-
withFlags
Sets the classfile access flags.- Parameters:
flags
- the access flags, as a bit mask- Returns:
- this builder
-
withFlags
Sets the classfile access flags.- Parameters:
flags
- the access flags- Returns:
- this builder
-
withSuperclass
Sets the superclass of this class.- Parameters:
superclassEntry
- the superclass- Returns:
- this builder
-
withSuperclass
Sets the superclass of this class.- Parameters:
desc
- the superclass- Returns:
- this builder
- Throws:
IllegalArgumentException
- ifdesc
represents a primitive type
-
withInterfaces
Sets the interfaces of this class.- Parameters:
interfaces
- the interfaces- Returns:
- this builder
-
withInterfaces
Sets the interfaces of this class.- Parameters:
interfaces
- the interfaces- Returns:
- this builder
-
withInterfaceSymbols
Sets the interfaces of this class.- Parameters:
interfaces
- the interfaces- Returns:
- this builder
-
withInterfaceSymbols
Sets the interfaces of this class.- Parameters:
interfaces
- the interfaces- Returns:
- this builder
-
withField
ClassBuilderPREVIEW withField(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, Consumer<? super FieldBuilderPREVIEW> handler) Adds a field.- Parameters:
name
- the name of the fielddescriptor
- the field descriptorhandler
- handler which receives aFieldBuilder
PREVIEW which can further define the contents of the field- Returns:
- this builder
-
withField
-
withField
default ClassBuilderPREVIEW withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilderPREVIEW> handler) Adds a field.- Parameters:
name
- the name of the fielddescriptor
- the field descriptorhandler
- handler which receives aFieldBuilder
PREVIEW which can further define the contents of the field- Returns:
- this builder
-
withField
Adds a field.- Parameters:
name
- the name of the fielddescriptor
- the field descriptorflags
- the access flags for this field- Returns:
- this builder
-
transformField
Adds a field by transforming a field from another class.- Implementation Note:
This method behaves as if:
withField(field.fieldName(), field.fieldType(), b -> b.transformField(field, transform));
- Parameters:
field
- the field to be transformedtransform
- the transform to apply to the field- Returns:
- this builder
-
withMethod
ClassBuilderPREVIEW withMethod(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, int methodFlags, Consumer<? super MethodBuilderPREVIEW> handler) Adds a method.- Parameters:
name
- the name of the methoddescriptor
- the method descriptormethodFlags
- the access flagshandler
- handler which receives aMethodBuilder
PREVIEW which can further define the contents of the method- Returns:
- this builder
-
withMethodBody
default ClassBuilderPREVIEW withMethodBody(Utf8EntryPREVIEW name, Utf8EntryPREVIEW descriptor, int methodFlags, Consumer<? super CodeBuilderPREVIEW> handler) Adds a method, with only aCode
attribute.- Parameters:
name
- the name of the methoddescriptor
- the method descriptormethodFlags
- the access flagshandler
- handler which receives aCodeBuilder
PREVIEW which can define the contents of the method body- Returns:
- this builder
-
withMethod
default ClassBuilderPREVIEW withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilderPREVIEW> handler) Adds a method.- Parameters:
name
- the name of the methoddescriptor
- the method descriptormethodFlags
- the access flagshandler
- handler which receives aMethodBuilder
PREVIEW which can further define the contents of the method- Returns:
- this builder
-
withMethodBody
default ClassBuilderPREVIEW withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilderPREVIEW> handler) Adds a method, with only aCodeAttribute
PREVIEW.- Parameters:
name
- the name of the methoddescriptor
- the method descriptormethodFlags
- the access flagshandler
- handler which receives aCodeBuilder
PREVIEW which can define the contents of the method body- Returns:
- this builder
-
transformMethod
Adds a method by transforming a method from another class.- Implementation Note:
This method behaves as if:
withMethod(method.methodName(), method.methodType(), b -> b.transformMethod(method, transform));
- Parameters:
method
- the method to be transformedtransform
- the transform to apply to the method- Returns:
- this builder
-
ClassBuilder
when preview features are enabled.