Interface ClassBuilder
- All Superinterfaces:
ClassFileBuilder<ClassElement, ClassBuilder>
,Consumer<ClassElement>
A builder for classfiles. Builders are not created directly; they are passed
to handlers by methods such as
ClassFile.build(ClassDesc, Consumer)
or to class transforms. The elements of a classfile can be specified
abstractly (by passing a ClassElement
to ClassFileBuilder.with(ClassFileElement)
)
or concretely by calling the various withXxx
methods.- Since:
- 24
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptiontransformField
(FieldModel field, FieldTransform transform) Adds a field by transforming a field from another class.transformMethod
(MethodModel method, MethodTransform transform) Adds a method by transforming a method from another class.default ClassBuilder
Adds a field.withField
(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler) Adds a field.default ClassBuilder
Adds a field.default ClassBuilder
withField
(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler) Adds a field.default ClassBuilder
withFlags
(int flags) Sets the classfile access flags.default ClassBuilder
withFlags
(AccessFlag... flags) Sets the classfile access flags.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.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 aCode
attribute.default ClassBuilder
withMethodBody
(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilder> handler) Adds a method, with only aCodeAttribute
.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 classfile version.Methods inherited from interface java.lang.classfile.ClassFileBuilder
accept, constantPool, transform, with
-
Method Details
-
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
ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler) Adds a field.- Parameters:
name
- the name of the fielddescriptor
- the field descriptorhandler
- handler which receives aFieldBuilder
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
-
withField
default ClassBuilder withField(String name, ClassDesc descriptor, Consumer<? super FieldBuilder> handler) Adds a field.- Parameters:
name
- the name of the fielddescriptor
- the field descriptorhandler
- handler which receives aFieldBuilder
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
ClassBuilder withMethod(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super MethodBuilder> handler) Adds a method.- Parameters:
name
- the name of the methoddescriptor
- the method descriptormethodFlags
- the access flagshandler
- handler which receives aMethodBuilder
which can further define the contents of the method- Returns:
- this builder
-
withMethodBody
default ClassBuilder withMethodBody(Utf8Entry name, Utf8Entry descriptor, int methodFlags, Consumer<? super CodeBuilder> 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
which can define the contents of the method body- Returns:
- this builder
-
withMethod
default ClassBuilder withMethod(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super MethodBuilder> handler) Adds a method.- Parameters:
name
- the name of the methoddescriptor
- the method descriptormethodFlags
- the access flagshandler
- handler which receives aMethodBuilder
which can further define the contents of the method- Returns:
- this builder
-
withMethodBody
default ClassBuilder withMethodBody(String name, MethodTypeDesc descriptor, int methodFlags, Consumer<? super CodeBuilder> handler) Adds a method, with only aCodeAttribute
.- Parameters:
name
- the name of the methoddescriptor
- the method descriptormethodFlags
- the access flagshandler
- handler which receives aCodeBuilder
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
-