APIdia Launch Partner
Top Fields Constructors Methods
jdk.internal.classfile.impl

public final Class DirectClassBuilder

extends AbstractDirectBuilder<ClassModel>
implements ClassBuilder
Class Inheritance
All Implemented Interfaces
java.lang.classfile.ClassBuilder, java.lang.classfile.ClassFileBuilder, java.util.function.Consumer
Imports
java.lang.classfile.*, java.lang.classfile.constantpool.ClassEntry, .Utf8Entry, java.lang.constant.ConstantDescs, java.util.Arrays, .Collections, .List, java.util.function.Consumer

Field Summary

Modifier and TypeField and Description
pack-priv static final int
DEFAULT_CLASS_FLAGS

The value of default class access flags

pack-priv static final ClassEntry[]
pack-priv static final Util.Writable[]
private Util.Writable[]
private int
private int
private List<ClassEntry>
private int
private Util.Writable[]
private int
private int
private int
private ClassEntry
pack-priv final ClassEntry
Inherited from jdk.internal.classfile.impl.AbstractDirectBuilder:
attributesconstantPoolcontextoriginal

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public byte[]
private ClassEntry[]
buildInterfaceEnties(int interfaceEntriesSize)

pack-priv void
setFlags(int flags)

pack-priv void
public void
setSizeHint(int sizeHint)

pack-priv void
setSuperclass(ClassEntry superclassEntry)

pack-priv void
setVersion(int major, int minor)

public ClassBuilder
transformField(FieldModel field, FieldTransform transform)

Implements java.lang.classfile.ClassBuilder.transformField.

Adds a field by transforming a field from another class.

public ClassBuilder
transformMethod(MethodModel method, MethodTransform transform)

Implements java.lang.classfile.ClassBuilder.transformMethod.

Adds a method by transforming a method from another class.

public ClassBuilder
with(ClassElement element)

Implements java.lang.classfile.ClassFileBuilder.with.

Integrates the member element into the structure being built.

public ClassBuilder
withField(Utf8Entry name, Utf8Entry descriptor, int flags)

Overrides default java.lang.classfile.ClassBuilder.withField.

Adds a field, with only access flags.

public ClassBuilder
withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)

Implements java.lang.classfile.ClassBuilder.withField.

Adds a field.

pack-priv ClassBuilder
public ClassBuilder
withFlags(int flags)

Overrides default java.lang.classfile.ClassBuilder.withFlags.

Sets the access flags of this class.

public ClassBuilder
withMethod(Utf8Entry name, Utf8Entry descriptor, int flags, Consumer<? super MethodBuilder> handler)

Implements java.lang.classfile.ClassBuilder.withMethod.

Adds a method.

pack-priv ClassBuilder
Inherited from jdk.internal.classfile.impl.AbstractDirectBuilder:
canWriteDirectconstantPoolsetOriginalwriteAttribute

Field Detail

DEFAULT_CLASS_FLAGSback to summary
pack-priv static final int DEFAULT_CLASS_FLAGS

The value of default class access flags

EMPTY_CLASS_ENTRY_ARRAYback to summary
pack-priv static final ClassEntry[] EMPTY_CLASS_ENTRY_ARRAY
EMPTY_WRITABLE_ARRAYback to summary
pack-priv static final Util.Writable[] EMPTY_WRITABLE_ARRAY
fieldsback to summary
private Util.Writable[] fields
fieldsCountback to summary
private int fieldsCount
flagsback to summary
private int flags
interfaceEntriesback to summary
private List<ClassEntry> interfaceEntries
majorVersionback to summary
private int majorVersion
methodsback to summary
private Util.Writable[] methods
methodsCountback to summary
private int methodsCount
minorVersionback to summary
private int minorVersion
sizeHintback to summary
private int sizeHint
superclassEntryback to summary
private ClassEntry superclassEntry
thisClassEntryback to summary
pack-priv final ClassEntry thisClassEntry

Constructor Detail

DirectClassBuilderback to summary
public DirectClassBuilder(SplitConstantPool constantPool, ClassFileImpl context, ClassEntry thisClass)

Method Detail

buildback to summary
public byte[] build()
buildInterfaceEntiesback to summary
private ClassEntry[] buildInterfaceEnties(int interfaceEntriesSize)
setFlagsback to summary
pack-priv void setFlags(int flags)
setInterfacesback to summary
pack-priv void setInterfaces(List<ClassEntry> interfaces)
setSizeHintback to summary
public void setSizeHint(int sizeHint)
setSuperclassback to summary
pack-priv void setSuperclass(ClassEntry superclassEntry)
setVersionback to summary
pack-priv void setVersion(int major, int minor)
transformFieldback to summary
public ClassBuilder transformField(FieldModel field, FieldTransform transform)

Implements java.lang.classfile.ClassBuilder.transformField.

Doc from java.lang.classfile.ClassBuilder.transformField.

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))
withField(field.fieldName(), field.fieldType(),
          fb -> fb.transform(field, transform))
Annotations
@Override
transformMethodback to summary
public ClassBuilder transformMethod(MethodModel method, MethodTransform transform)

Implements java.lang.classfile.ClassBuilder.transformMethod.

Doc from java.lang.classfile.ClassBuilder.transformMethod.

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))
withMethod(method.methodName(), method.methodType(), method.flags().flagMask(),
           mb -> mb.transform(method, transform))
Annotations
@Override
withback to summary
public ClassBuilder with(ClassElement element)

Implements java.lang.classfile.ClassFileBuilder.with.

Doc from java.lang.classfile.ClassFileBuilder.with.

Integrates the member element into the structure being built.

Annotations
@Override
withFieldback to summary
public ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, int flags)

Overrides default java.lang.classfile.ClassBuilder.withField.

Doc from java.lang.classfile.ClassBuilder.withField.

Adds a field, with only access flags.

Annotations
@Override
withFieldback to summary
public ClassBuilder withField(Utf8Entry name, Utf8Entry descriptor, Consumer<? super FieldBuilder> handler)

Implements java.lang.classfile.ClassBuilder.withField.

Doc from java.lang.classfile.ClassBuilder.withField.

Adds a field.

Annotations
@Override
withFieldback to summary
pack-priv ClassBuilder withField(Util.Writable field)
withFlagsback to summary
public ClassBuilder withFlags(int flags)

Overrides default java.lang.classfile.ClassBuilder.withFlags.

Doc from java.lang.classfile.ClassBuilder.withFlags.

Sets the access flags of this class.

Annotations
@Override
withMethodback to summary
public ClassBuilder withMethod(Utf8Entry name, Utf8Entry descriptor, int flags, Consumer<? super MethodBuilder> handler)

Implements java.lang.classfile.ClassBuilder.withMethod.

Doc from java.lang.classfile.ClassBuilder.withMethod.

Adds a method. The bit for ACC_STATIC flag cannot be modified by the handler later, and must be set through methodFlags.

Annotations
@Override
withMethodback to summary
pack-priv ClassBuilder withMethod(Util.Writable method)