Interface PoolEntry
- All Known Subinterfaces:
AnnotationConstantValueEntry,ClassEntry,ConstantDynamicEntry,ConstantValueEntry,DoubleEntry,DynamicConstantPoolEntry,FieldRefEntry,FloatEntry,IntegerEntry,InterfaceMethodRefEntry,InvokeDynamicEntry,LoadableConstantEntry,LongEntry,MemberRefEntry,MethodHandleEntry,MethodRefEntry,MethodTypeEntry,ModuleEntry,NameAndTypeEntry,PackageEntry,StringEntry,Utf8Entry
public sealed interface PoolEntry
permits AnnotationConstantValueEntry, DynamicConstantPoolEntry, LoadableConstantEntry, MemberRefEntry, ModuleEntry, NameAndTypeEntry, PackageEntry
Models an entry in the constant pool of a
class file. Entries are
read from class files, and can be created with a ConstantPoolBuilder to write to class files.- Implementation Note:
Unbound Constant Pool Entries
Implementations may create unbound constant pool entries not belonging to an actual constant pool. They conveniently represent constant pool entries referred by unbound attributes not read from aclassfile. Theirindex()return a non-positive invalid value, and behaviors of theirconstantPool()are unspecified. They are considered alien to any contextual constant pool and will be converted when they are written toclassfiles.- Sealed Class Hierarchy Graph:
- Since:
- 24
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe tag forCONSTANT_Classconstant kind.static final intThe tag forCONSTANT_Doubleconstant kind.static final intThe tag forCONSTANT_Dynamicconstant kind.static final intThe tag forCONSTANT_Fieldrefconstant kind.static final intThe tag forCONSTANT_Floatconstant kind.static final intThe tag forCONSTANT_Integerconstant kind.static final intThe tag forCONSTANT_InterfaceMethodrefconstant kind.static final intThe tag forCONSTANT_InvokeDynamicconstant kind.static final intThe tag forCONSTANT_Longconstant kind.static final intThe tag forCONSTANT_MethodHandleconstant kind.static final intThe tag forCONSTANT_MethodTypeconstant kind.static final intThe tag forCONSTANT_Methodrefconstant kind.static final intThe tag forCONSTANT_Moduleconstant kind.static final intThe tag forCONSTANT_NameAndTypeconstant kind.static final intThe tag forCONSTANT_Packageconstant kind.static final intThe tag forCONSTANT_Stringconstant kind.static final intThe tag forCONSTANT_Utf8constant kind. -
Method Summary
Modifier and TypeMethodDescriptionReturns the constant pool this entry is from.intindex()Returns the index within the constant pool corresponding to this entry.inttag()Returns the constant pool tag that describes the type of this entry.intwidth()Returns the number of constant pool slots this entry consumes.
-
Field Details
-
TAG_CLASS
-
TAG_DOUBLE
-
TAG_DYNAMIC
-
TAG_FIELDREF
-
TAG_FLOAT
-
TAG_INTEGER
-
TAG_INTERFACE_METHODREF
static final int TAG_INTERFACE_METHODREFThe tag forCONSTANT_InterfaceMethodrefconstant kind.- See Also:
-
TAG_INVOKE_DYNAMIC
-
TAG_LONG
-
TAG_METHOD_HANDLE
-
TAG_METHODREF
-
TAG_METHOD_TYPE
-
TAG_MODULE
-
TAG_NAME_AND_TYPE
-
TAG_PACKAGE
-
TAG_STRING
-
TAG_UTF8
-
-
Method Details
-
constantPool
ConstantPool constantPool()Returns the constant pool this entry is from.- API Note:
- Given a
ConstantPoolBuilderbuilderand aPoolEntry entry, usebuilder.canWriteDirect(entry.constantPool())instead of object equality of the constant pool to determine if an entry belongs to the builder. - Returns:
- the constant pool this entry is from
- See Also:
-
tag
int tag()Returns the constant pool tag that describes the type of this entry.- API Note:
TAG_-prefixed constants in this class, such asTAG_UTF8, describe the possible return values of this method.- Returns:
- the constant pool tag that describes the type of this entry
-
index
int index()Returns the index within the constant pool corresponding to this entry. A valid index is always positive; if the index is non-positive, this entry is unbound.- Returns:
- the index within the constant pool corresponding to this entry
- See Also:
-
width
int width()Returns the number of constant pool slots this entry consumes.All pool entries except
CONSTANT_LongandCONSTANT_Doublehave width1. These two exceptions have width2, and their subsequent indices atindex() + 1are considered unusable.- API Note:
- If this entry is loadable, the width
of this entry does not decide if this entry should be loaded with
ldcorldc2_w. For example,ConstantDynamicEntryalways has width1, but it must be loaded withldc2_wif its type islongordouble. UsetypeKind().slotSize()to determine the loading instruction instead. - Returns:
- the number of constant pool slots this entry consumes
- See Also:
-