Interface ConstantPoolBuilder
- All Superinterfaces:
ConstantPoolPREVIEW
,Iterable<PoolEntryPREVIEW>
ConstantPoolBuilder
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.
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
PREVIEW.
The ConstantPoolBuilder also provides access to some of the
state of the ClassBuilder, such as classfile processing options.- Since:
- 22
-
Method Summary
Modifier and TypeMethodDescriptionbsmEntry
(MethodHandleEntryPREVIEW methodReference, List<LoadableConstantEntryPREVIEW> arguments) Returns aBootstrapMethodEntry
PREVIEW describing the provided bootstrap method and static arguments.default BootstrapMethodEntryPREVIEW
bsmEntry
(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments) Returns aBootstrapMethodEntry
PREVIEW describing the provided bootstrap method and static arguments.boolean
canWriteDirect
(ConstantPoolPREVIEW constantPool) Returns whether the provided constant pool is index-compatible with this one.Returns AClassEntry
PREVIEW describing the class whose internal name is encoded in the provided Utf8Entry.default ClassEntryPREVIEW
classEntry
(ClassDesc classDesc) constantDynamicEntry
(BootstrapMethodEntryPREVIEW bootstrapMethodEntry, NameAndTypeEntryPREVIEW nameAndType) Returns AConstantDynamicEntry
PREVIEW describing a dynamic constant.default ConstantDynamicEntryPREVIEW
Returns AConstantDynamicEntry
PREVIEW describing a dynamic constant.default ConstantValueEntryPREVIEW
Returns AConstantValueEntry
PREVIEW describing the provided Integer, Long, Float, Double, or String constant.doubleEntry
(double value) Returns ADoubleEntry
PREVIEW describing the provided value.fieldRefEntry
(ClassEntryPREVIEW owner, NameAndTypeEntryPREVIEW nameAndType) Returns AFieldRefEntry
PREVIEW describing a field of a class.default FieldRefEntryPREVIEW
fieldRefEntry
(ClassDesc owner, String name, ClassDesc type) Returns AFieldRefEntry
PREVIEW describing a field of a class.floatEntry
(float value) Returns AFloatEntry
PREVIEW describing the provided value.intEntry
(int value) Returns AnIntegerEntry
PREVIEW describing the provided value.interfaceMethodRefEntry
(ClassEntryPREVIEW owner, NameAndTypeEntryPREVIEW nameAndType) Returns AInterfaceMethodRefEntry
PREVIEW describing a method of a class.default InterfaceMethodRefEntryPREVIEW
interfaceMethodRefEntry
(ClassDesc owner, String name, MethodTypeDesc type) Returns AInterfaceMethodRefEntry
PREVIEW describing a method of a class.invokeDynamicEntry
(BootstrapMethodEntryPREVIEW bootstrapMethodEntry, NameAndTypeEntryPREVIEW nameAndType) Returns AnInvokeDynamicEntry
PREVIEW describing a dynamic call site.default InvokeDynamicEntryPREVIEW
Returns AnInvokeDynamicEntry
PREVIEW describing a dynamic call site.default LoadableConstantEntryPREVIEW
Returns ALoadableConstantEntry
PREVIEW describing the provided constant.longEntry
(long value) methodHandleEntry
(int refKind, MemberRefEntryPREVIEW reference) Returns AMethodHandleEntry
PREVIEW describing a field accessor or method.default MethodHandleEntryPREVIEW
methodHandleEntry
(DirectMethodHandleDesc descriptor) Returns AMethodHandleEntry
PREVIEW describing a direct method handle.methodRefEntry
(ClassEntryPREVIEW owner, NameAndTypeEntryPREVIEW nameAndType) Returns AMethodRefEntry
PREVIEW describing a method of a class.default MethodRefEntryPREVIEW
methodRefEntry
(ClassDesc owner, String name, MethodTypeDesc type) Returns AMethodRefEntry
PREVIEW describing a method of a class.methodTypeEntry
(Utf8EntryPREVIEW descriptor) Returns AMethodTypeEntry
PREVIEW describing a method type.methodTypeEntry
(MethodTypeDesc descriptor) Returns AMethodTypeEntry
PREVIEW describing a method type.moduleEntry
(Utf8EntryPREVIEW moduleName) default ModuleEntryPREVIEW
moduleEntry
(ModuleDesc moduleDesc) nameAndTypeEntry
(Utf8EntryPREVIEW nameEntry, Utf8EntryPREVIEW typeEntry) Returns ANameAndTypeEntry
PREVIEW describing the provided name and type.default NameAndTypeEntryPREVIEW
nameAndTypeEntry
(String name, ClassDesc type) Returns ANameAndTypeEntry
PREVIEW describing the provided name and type.default NameAndTypeEntryPREVIEW
nameAndTypeEntry
(String name, MethodTypeDesc type) Returns ANameAndTypeEntry
PREVIEW describing the provided name and type.static ConstantPoolBuilderPREVIEW
of()
Returns a new constant pool builder.static ConstantPoolBuilderPREVIEW
of
(ClassModelPREVIEW classModel) Returns a new constant pool builder.packageEntry
(Utf8EntryPREVIEW nameEntry) Returns APackageEntry
PREVIEW describing the class whose internal name is encoded in the provided Utf8Entry.default PackageEntryPREVIEW
packageEntry
(PackageDesc packageDesc) stringEntry
(Utf8EntryPREVIEW utf8) Returns AStringEntry
PREVIEW referencing the provided UTF8 entry.default StringEntryPREVIEW
stringEntry
(String value) Returns AStringEntry
PREVIEW describing the provided value.utf8Entry
(MethodTypeDesc desc) Methods declared in interface java.lang.classfile.constantpool.ConstantPoolPREVIEW
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
PREVIEW 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
PREVIEW describing the method descriptor of the provided MethodTypeDesc
-
classEntry
Returns AClassEntry
PREVIEW 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
PREVIEW describing the class whose internal name is encoded in the provided Utf8Entry
-
classEntry
Returns AClassEntry
PREVIEW 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
PREVIEW describing the class described by provided ClassDesc - Throws:
IllegalArgumentException
- ifclassDesc
represents a primitive type
-
packageEntry
Returns APackageEntry
PREVIEW 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
PREVIEW describing the class whose internal name is encoded in the provided Utf8Entry
-
packageEntry
Returns APackageEntry
PREVIEW 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
PREVIEW describing the class described by provided PackageDesc
-
moduleEntry
Returns AModuleEntry
PREVIEW 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
PREVIEW describing the module whose name is encoded in the provided Utf8Entry
-
moduleEntry
Returns AModuleEntry
PREVIEW 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
PREVIEW describing the module described by provided ModuleDesc
-
nameAndTypeEntry
Returns ANameAndTypeEntry
PREVIEW 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
PREVIEW describing the provided name and type
-
nameAndTypeEntry
Returns ANameAndTypeEntry
PREVIEW 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
PREVIEW describing the provided name and type
-
nameAndTypeEntry
Returns ANameAndTypeEntry
PREVIEW 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
PREVIEW describing the provided name and type
-
fieldRefEntry
Returns AFieldRefEntry
PREVIEW 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
PREVIEW describing a field of a class
-
fieldRefEntry
Returns AFieldRefEntry
PREVIEW 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
PREVIEW describing a field of a class - Throws:
IllegalArgumentException
- ifowner
represents a primitive type
-
methodRefEntry
Returns AMethodRefEntry
PREVIEW 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
PREVIEW describing a method of a class
-
methodRefEntry
Returns AMethodRefEntry
PREVIEW 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
PREVIEW describing a method of a class - Throws:
IllegalArgumentException
- ifowner
represents a primitive type
-
interfaceMethodRefEntry
InterfaceMethodRefEntryPREVIEW interfaceMethodRefEntry(ClassEntryPREVIEW owner, NameAndTypeEntryPREVIEW nameAndType) Returns AInterfaceMethodRefEntry
PREVIEW 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
PREVIEW describing a method of a class
-
interfaceMethodRefEntry
default InterfaceMethodRefEntryPREVIEW interfaceMethodRefEntry(ClassDesc owner, String name, MethodTypeDesc type) Returns AInterfaceMethodRefEntry
PREVIEW 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
PREVIEW describing a method of a class - Throws:
IllegalArgumentException
- ifowner
represents a primitive type
-
methodTypeEntry
Returns AMethodTypeEntry
PREVIEW 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
PREVIEW describing a method type
-
methodTypeEntry
Returns AMethodTypeEntry
PREVIEW 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
PREVIEW describing a method type
-
methodHandleEntry
Returns AMethodHandleEntry
PREVIEW 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
PREVIEW describing a direct method handle
-
methodHandleEntry
Returns AMethodHandleEntry
PREVIEW 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
PREVIEW describing a field accessor or method
-
invokeDynamicEntry
Returns AnInvokeDynamicEntry
PREVIEW 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
PREVIEW describing a dynamic call site
-
invokeDynamicEntry
InvokeDynamicEntryPREVIEW invokeDynamicEntry(BootstrapMethodEntryPREVIEW bootstrapMethodEntry, NameAndTypeEntryPREVIEW nameAndType) Returns AnInvokeDynamicEntry
PREVIEW 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
PREVIEW describing a dynamic call site
-
constantDynamicEntry
Returns AConstantDynamicEntry
PREVIEW 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
PREVIEW describing a dynamic constant
-
constantDynamicEntry
ConstantDynamicEntryPREVIEW constantDynamicEntry(BootstrapMethodEntryPREVIEW bootstrapMethodEntry, NameAndTypeEntryPREVIEW nameAndType) Returns AConstantDynamicEntry
PREVIEW 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
PREVIEW describing a dynamic constant
-
intEntry
Returns AnIntegerEntry
PREVIEW 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
PREVIEW describing the provided value
-
floatEntry
Returns AFloatEntry
PREVIEW 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
PREVIEW describing the provided value
-
longEntry
-
doubleEntry
Returns ADoubleEntry
PREVIEW 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
PREVIEW describing the provided value
-
stringEntry
Returns AStringEntry
PREVIEW 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
PREVIEW referencing the provided UTF8 entry
-
stringEntry
Returns AStringEntry
PREVIEW 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
PREVIEW describing the provided value
-
constantValueEntry
Returns AConstantValueEntry
PREVIEW describing the provided Integer, Long, Float, Double, or String constant.- Parameters:
c
- the constant- Returns:
- A
ConstantValueEntry
PREVIEW describing the provided Integer, Long, Float, Double, or String constant - See Also:
-
loadableConstantEntry
Returns ALoadableConstantEntry
PREVIEW 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
PREVIEW describing the provided constant
-
bsmEntry
default BootstrapMethodEntryPREVIEW bsmEntry(DirectMethodHandleDesc methodReference, List<ConstantDesc> arguments) Returns aBootstrapMethodEntry
PREVIEW describing the provided bootstrap method and static arguments.- Parameters:
methodReference
- the bootstrap methodarguments
- the bootstrap arguments- Returns:
- a
BootstrapMethodEntry
PREVIEW describing the provided bootstrap method and static arguments
-
bsmEntry
BootstrapMethodEntryPREVIEW bsmEntry(MethodHandleEntryPREVIEW methodReference, List<LoadableConstantEntryPREVIEW> arguments) Returns aBootstrapMethodEntry
PREVIEW describing the provided bootstrap method and static arguments.- Parameters:
methodReference
- the bootstrap methodarguments
- the bootstrap arguments- Returns:
- a
BootstrapMethodEntry
PREVIEW describing the provided bootstrap method and static arguments
-
ConstantPoolBuilder
when preview features are enabled.