Interface ConstantPoolBuilder
- All Superinterfaces:
ConstantPool
,Iterable<PoolEntry>
Builder for the constant pool of a classfile. Provides read and write access
to the constant pool that is being built. Writing is append-only and idempotent
(entry-bearing methods will return an existing entry if there is one).
A ConstantPoolBuilder is associated with a
ClassBuilder
.
The ConstantPoolBuilder also provides access to some of the
state of the ClassBuilder, such as classfile processing options.- Since:
- 24
-
Method Summary
Modifier and TypeMethodDescriptionbsmEntry
(MethodHandleEntry methodReference, List<LoadableConstantEntry> arguments) Returns aBootstrapMethodEntry
describing the provided bootstrap method and static arguments.default BootstrapMethodEntry
bsmEntry
(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments) Returns aBootstrapMethodEntry
describing the provided bootstrap method and static arguments.boolean
canWriteDirect
(ConstantPool constantPool) Returns whether the provided constant pool is index-compatible with this one.classEntry
(Utf8Entry ne) Returns AClassEntry
describing the class whose internal name is encoded in the provided Utf8Entry.default ClassEntry
classEntry
(ClassDesc classDesc) Returns AClassEntry
describing the class described by provided ClassDesc.constantDynamicEntry
(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) Returns AConstantDynamicEntry
describing a dynamic constant.default ConstantDynamicEntry
Returns AConstantDynamicEntry
describing a dynamic constant.default ConstantValueEntry
Returns AConstantValueEntry
describing the provided Integer, Long, Float, Double, or String constant.doubleEntry
(double value) Returns ADoubleEntry
describing the provided value.fieldRefEntry
(ClassEntry owner, NameAndTypeEntry nameAndType) Returns AFieldRefEntry
describing a field of a class.default FieldRefEntry
fieldRefEntry
(ClassDesc owner, String name, ClassDesc type) Returns AFieldRefEntry
describing a field of a class.floatEntry
(float value) Returns AFloatEntry
describing the provided value.intEntry
(int value) Returns AnIntegerEntry
describing the provided value.interfaceMethodRefEntry
(ClassEntry owner, NameAndTypeEntry nameAndType) Returns AInterfaceMethodRefEntry
describing a method of a class.default InterfaceMethodRefEntry
interfaceMethodRefEntry
(ClassDesc owner, String name, MethodTypeDesc type) Returns AInterfaceMethodRefEntry
describing a method of a class.invokeDynamicEntry
(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) Returns AnInvokeDynamicEntry
describing a dynamic call site.default InvokeDynamicEntry
Returns AnInvokeDynamicEntry
describing a dynamic call site.default LoadableConstantEntry
Returns ALoadableConstantEntry
describing the provided constant.longEntry
(long value) Returns ALongEntry
describing the provided value.methodHandleEntry
(int refKind, MemberRefEntry reference) Returns AMethodHandleEntry
describing a field accessor or method.default MethodHandleEntry
methodHandleEntry
(DirectMethodHandleDesc descriptor) Returns AMethodHandleEntry
describing a direct method handle.methodRefEntry
(ClassEntry owner, NameAndTypeEntry nameAndType) Returns AMethodRefEntry
describing a method of a class.default MethodRefEntry
methodRefEntry
(ClassDesc owner, String name, MethodTypeDesc type) Returns AMethodRefEntry
describing a method of a class.methodTypeEntry
(Utf8Entry descriptor) Returns AMethodTypeEntry
describing a method type.methodTypeEntry
(MethodTypeDesc descriptor) Returns AMethodTypeEntry
describing a method type.moduleEntry
(Utf8Entry moduleName) Returns AModuleEntry
describing the module whose name is encoded in the provided Utf8Entry.default ModuleEntry
moduleEntry
(ModuleDesc moduleDesc) Returns AModuleEntry
describing the module described by provided ModuleDesc.nameAndTypeEntry
(Utf8Entry nameEntry, Utf8Entry typeEntry) Returns ANameAndTypeEntry
describing the provided name and type.default NameAndTypeEntry
nameAndTypeEntry
(String name, ClassDesc type) Returns ANameAndTypeEntry
describing the provided name and type.default NameAndTypeEntry
nameAndTypeEntry
(String name, MethodTypeDesc type) Returns ANameAndTypeEntry
describing the provided name and type.static ConstantPoolBuilder
of()
Returns a new constant pool builder.static ConstantPoolBuilder
of
(ClassModel classModel) Returns a new constant pool builder.packageEntry
(Utf8Entry nameEntry) Returns APackageEntry
describing the class whose internal name is encoded in the provided Utf8Entry.default PackageEntry
packageEntry
(PackageDesc packageDesc) Returns APackageEntry
describing the class described by provided PackageDesc.stringEntry
(Utf8Entry utf8) Returns AStringEntry
referencing the provided UTF8 entry.default StringEntry
stringEntry
(String value) Returns AStringEntry
describing the provided value.default Utf8Entry
default Utf8Entry
utf8Entry
(MethodTypeDesc desc) Returns AUtf8Entry
describing the method descriptor of the provided MethodTypeDesc.Methods declared in interface java.lang.classfile.constantpool.ConstantPool
bootstrapMethodCount, bootstrapMethodEntry, entryByIndex, entryByIndex, iterator, size
Methods declared in interface java.lang.Iterable
forEach, spliterator
-
Method Details
-
of
Returns a new constant pool builder. The new constant pool builder will be pre-populated with the contents of the constant pool associated with the class reader.- Parameters:
classModel
- the class to copy from- Returns:
- a new constant pool builder
-
of
Returns a new constant pool builder. The new constant pool builder will be empty.- Returns:
- a new constant pool builder
-
canWriteDirect
Returns whether the provided constant pool is index-compatible with this one. This may be because they are the same constant pool, or because this constant pool was copied from the other.- Parameters:
constantPool
- the other constant pool- Returns:
- whether the provided constant pool is index-compatible with this one
-
utf8Entry
-
utf8Entry
-
utf8Entry
Returns AUtf8Entry
describing the method descriptor of the provided MethodTypeDesc. If a UTF8 entry in the pool already describes this field descriptor, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
desc
- the symbolic descriptor for the method type- Returns:
- A
Utf8Entry
describing the method descriptor of the provided MethodTypeDesc
-
classEntry
Returns AClassEntry
describing the class whose internal name is encoded in the provided Utf8Entry. If a Class entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
ne
- the constant pool entry describing the internal name of the class- Returns:
- A
ClassEntry
describing the class whose internal name is encoded in the provided Utf8Entry
-
classEntry
Returns AClassEntry
describing the class described by provided ClassDesc. If a Class entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
classDesc
- the symbolic descriptor for the class- Returns:
- A
ClassEntry
describing the class described by provided ClassDesc - Throws:
IllegalArgumentException
- ifclassDesc
represents a primitive type
-
packageEntry
Returns APackageEntry
describing the class whose internal name is encoded in the provided Utf8Entry. If a Package entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
nameEntry
- the constant pool entry describing the internal name of the package- Returns:
- A
PackageEntry
describing the class whose internal name is encoded in the provided Utf8Entry
-
packageEntry
Returns APackageEntry
describing the class described by provided PackageDesc. If a Package entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
packageDesc
- the symbolic descriptor for the class- Returns:
- A
PackageEntry
describing the class described by provided PackageDesc
-
moduleEntry
Returns AModuleEntry
describing the module whose name is encoded in the provided Utf8Entry. If a module entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
moduleName
- the constant pool entry describing the module name- Returns:
- A
ModuleEntry
describing the module whose name is encoded in the provided Utf8Entry
-
moduleEntry
Returns AModuleEntry
describing the module described by provided ModuleDesc. If a module entry in the pool already describes this class, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
moduleDesc
- the symbolic descriptor for the class- Returns:
- A
ModuleEntry
describing the module described by provided ModuleDesc
-
nameAndTypeEntry
Returns ANameAndTypeEntry
describing the provided name and type. If a NameAndType entry in the pool already describes this name and type, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
nameEntry
- the member nametypeEntry
- the member field or method descriptor- Returns:
- A
NameAndTypeEntry
describing the provided name and type
-
nameAndTypeEntry
Returns ANameAndTypeEntry
describing the provided name and type. If a NameAndType entry in the pool already describes this name and type, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
name
- the member nametype
- the symbolic descriptor for a field type- Returns:
- A
NameAndTypeEntry
describing the provided name and type
-
nameAndTypeEntry
Returns ANameAndTypeEntry
describing the provided name and type. If a NameAndType entry in the pool already describes this name and type, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
name
- the member nametype
- the symbolic descriptor for a method type- Returns:
- A
NameAndTypeEntry
describing the provided name and type
-
fieldRefEntry
Returns AFieldRefEntry
describing a field of a class. If a FieldRef entry in the pool already describes this field, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
owner
- the class the field is a member ofnameAndType
- the name and type of the field- Returns:
- A
FieldRefEntry
describing a field of a class
-
fieldRefEntry
Returns AFieldRefEntry
describing a field of a class. If a FieldRef entry in the pool already describes this field, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
owner
- the class the field is a member ofname
- the name of the fieldtype
- the type of the field- Returns:
- A
FieldRefEntry
describing a field of a class - Throws:
IllegalArgumentException
- ifowner
represents a primitive type
-
methodRefEntry
Returns AMethodRefEntry
describing a method of a class. If a MethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
owner
- the class the method is a member ofnameAndType
- the name and type of the method- Returns:
- A
MethodRefEntry
describing a method of a class
-
methodRefEntry
Returns AMethodRefEntry
describing a method of a class. If a MethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
owner
- the class the method is a member ofname
- the name of the methodtype
- the type of the method- Returns:
- A
MethodRefEntry
describing a method of a class - Throws:
IllegalArgumentException
- ifowner
represents a primitive type
-
interfaceMethodRefEntry
Returns AInterfaceMethodRefEntry
describing a method of a class. If a InterfaceMethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
owner
- the class the method is a member ofnameAndType
- the name and type of the method- Returns:
- A
InterfaceMethodRefEntry
describing a method of a class
-
interfaceMethodRefEntry
default InterfaceMethodRefEntry interfaceMethodRefEntry(ClassDesc owner, String name, MethodTypeDesc type) Returns AInterfaceMethodRefEntry
describing a method of a class. If a InterfaceMethodRefEntry entry in the pool already describes this method, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
owner
- the class the method is a member ofname
- the name of the methodtype
- the type of the method- Returns:
- A
InterfaceMethodRefEntry
describing a method of a class - Throws:
IllegalArgumentException
- ifowner
represents a primitive type
-
methodTypeEntry
Returns AMethodTypeEntry
describing a method type. If a MethodType entry in the pool already describes this method type, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
descriptor
- the symbolic descriptor of the method type- Returns:
- A
MethodTypeEntry
describing a method type
-
methodTypeEntry
Returns AMethodTypeEntry
describing a method type. If a MethodType entry in the pool already describes this method type, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
descriptor
- the constant pool entry for the method type descriptor- Returns:
- A
MethodTypeEntry
describing a method type
-
methodHandleEntry
Returns AMethodHandleEntry
describing a direct method handle. If a MethodHandle entry in the pool already describes this method handle, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
descriptor
- the symbolic descriptor of the method handle- Returns:
- A
MethodHandleEntry
describing a direct method handle
-
methodHandleEntry
Returns AMethodHandleEntry
describing a field accessor or method. If a MethodHandle entry in the pool already describes this method handle, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
refKind
- the reference kind of the method handle (JVMS 4.4.8)reference
- the constant pool entry describing the field or method- Returns:
- A
MethodHandleEntry
describing a field accessor or method
-
invokeDynamicEntry
Returns AnInvokeDynamicEntry
describing a dynamic call site. If an InvokeDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
dcsd
- the symbolic descriptor of the method handle- Returns:
- An
InvokeDynamicEntry
describing a dynamic call site
-
invokeDynamicEntry
InvokeDynamicEntry invokeDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) Returns AnInvokeDynamicEntry
describing a dynamic call site. If an InvokeDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
bootstrapMethodEntry
- the entry in the bootstrap method tablenameAndType
- the invocation name and type- Returns:
- An
InvokeDynamicEntry
describing a dynamic call site
-
constantDynamicEntry
Returns AConstantDynamicEntry
describing a dynamic constant. If a ConstantDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
dcd
- the symbolic descriptor of the constant- Returns:
- A
ConstantDynamicEntry
describing a dynamic constant
-
constantDynamicEntry
ConstantDynamicEntry constantDynamicEntry(BootstrapMethodEntry bootstrapMethodEntry, NameAndTypeEntry nameAndType) Returns AConstantDynamicEntry
describing a dynamic constant. If a ConstantDynamic entry in the pool already describes this site, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
bootstrapMethodEntry
- the entry in the bootstrap method tablenameAndType
- the invocation name and type- Returns:
- A
ConstantDynamicEntry
describing a dynamic constant
-
intEntry
Returns AnIntegerEntry
describing the provided value. If an integer entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
value
- the value- Returns:
- An
IntegerEntry
describing the provided value
-
floatEntry
Returns AFloatEntry
describing the provided value. If a float entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
value
- the value- Returns:
- A
FloatEntry
describing the provided value
-
longEntry
-
doubleEntry
Returns ADoubleEntry
describing the provided value. If a double entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
value
- the value- Returns:
- A
DoubleEntry
describing the provided value
-
stringEntry
Returns AStringEntry
referencing the provided UTF8 entry. If a String entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
utf8
- the UTF8 entry describing the string- Returns:
- A
StringEntry
referencing the provided UTF8 entry
-
stringEntry
Returns AStringEntry
describing the provided value. If a string entry in the pool already describes this value, it is returned; otherwise, a new entry is added and the new entry is returned.- Parameters:
value
- the value- Returns:
- A
StringEntry
describing the provided value
-
constantValueEntry
Returns AConstantValueEntry
describing the provided Integer, Long, Float, Double, or String constant.- Parameters:
c
- the constant- Returns:
- A
ConstantValueEntry
describing the provided Integer, Long, Float, Double, or String constant - See Also:
-
loadableConstantEntry
Returns ALoadableConstantEntry
describing the provided constant. The constant should be an Integer, String, Long, Float, Double, ClassDesc (for a Class constant), MethodTypeDesc (for a MethodType constant), DirectMethodHandleDesc (for a MethodHandle constant), or a DynamicConstantDesc (for a dynamic constant.)- Parameters:
c
- the constant- Returns:
- A
LoadableConstantEntry
describing the provided constant
-
bsmEntry
default BootstrapMethodEntry bsmEntry(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments) Returns aBootstrapMethodEntry
describing the provided bootstrap method and static arguments.- Parameters:
methodReference
- the bootstrap methodarguments
- the bootstrap arguments- Returns:
- a
BootstrapMethodEntry
describing the provided bootstrap method and static arguments
-
bsmEntry
BootstrapMethodEntry bsmEntry(MethodHandleEntry methodReference, List<LoadableConstantEntry> arguments) Returns aBootstrapMethodEntry
describing the provided bootstrap method and static arguments.- Parameters:
methodReference
- the bootstrap methodarguments
- the bootstrap arguments- Returns:
- a
BootstrapMethodEntry
describing the provided bootstrap method and static arguments
-