- 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.- 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
static final int TAG_CLASSThe tag forCONSTANT_Classconstant kind.- See Also:
-
TAG_DOUBLE
static final int TAG_DOUBLEThe tag forCONSTANT_Doubleconstant kind.- See Also:
-
TAG_DYNAMIC
static final int TAG_DYNAMICThe tag forCONSTANT_Dynamicconstant kind.- See Also:
-
TAG_FIELDREF
static final int TAG_FIELDREFThe tag forCONSTANT_Fieldrefconstant kind.- See Also:
-
TAG_FLOAT
static final int TAG_FLOATThe tag forCONSTANT_Floatconstant kind.- See Also:
-
TAG_INTEGER
static final int TAG_INTEGERThe tag forCONSTANT_Integerconstant kind.- See Also:
-
TAG_INTERFACE_METHODREF
static final int TAG_INTERFACE_METHODREFThe tag forCONSTANT_InterfaceMethodrefconstant kind.- See Also:
-
TAG_INVOKE_DYNAMIC
static final int TAG_INVOKE_DYNAMICThe tag forCONSTANT_InvokeDynamicconstant kind.- See Also:
-
TAG_LONG
static final int TAG_LONGThe tag forCONSTANT_Longconstant kind.- See Also:
-
TAG_METHOD_HANDLE
static final int TAG_METHOD_HANDLEThe tag forCONSTANT_MethodHandleconstant kind.- See Also:
-
TAG_METHODREF
static final int TAG_METHODREFThe tag forCONSTANT_Methodrefconstant kind.- See Also:
-
TAG_METHOD_TYPE
static final int TAG_METHOD_TYPEThe tag forCONSTANT_MethodTypeconstant kind.- See Also:
-
TAG_MODULE
static final int TAG_MODULEThe tag forCONSTANT_Moduleconstant kind.- See Also:
-
TAG_NAME_AND_TYPE
static final int TAG_NAME_AND_TYPEThe tag forCONSTANT_NameAndTypeconstant kind.- See Also:
-
TAG_PACKAGE
static final int TAG_PACKAGEThe tag forCONSTANT_Packageconstant kind.- See Also:
-
TAG_STRING
static final int TAG_STRINGThe tag forCONSTANT_Stringconstant kind.- See Also:
-
TAG_UTF8
static final int TAG_UTF8The tag forCONSTANT_Utf8constant kind.- See Also:
-
-
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:
-