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 aclass
file. 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 toclass
files.- Sealed Class Hierarchy Graph:
- Since:
- 24
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
The tag forCONSTANT_Class
constant kind.static final int
The tag forCONSTANT_Double
constant kind.static final int
The tag forCONSTANT_Dynamic
constant kind.static final int
The tag forCONSTANT_Fieldref
constant kind.static final int
The tag forCONSTANT_Float
constant kind.static final int
The tag forCONSTANT_Integer
constant kind.static final int
The tag forCONSTANT_InterfaceMethodref
constant kind.static final int
The tag forCONSTANT_InvokeDynamic
constant kind.static final int
The tag forCONSTANT_Long
constant kind.static final int
The tag forCONSTANT_MethodHandle
constant kind.static final int
The tag forCONSTANT_MethodType
constant kind.static final int
The tag forCONSTANT_Methodref
constant kind.static final int
The tag forCONSTANT_Module
constant kind.static final int
The tag forCONSTANT_NameAndType
constant kind.static final int
The tag forCONSTANT_Package
constant kind.static final int
The tag forCONSTANT_String
constant kind.static final int
The tag forCONSTANT_Utf8
constant kind. -
Method Summary
Modifier and TypeMethodDescriptionReturns the constant pool this entry is from.int
index()
Returns the index within the constant pool corresponding to this entry.int
tag()
Returns the constant pool tag that describes the type of this entry.int
width()
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_InterfaceMethodref
constant 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
ConstantPoolBuilder
builder
and 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_Long
andCONSTANT_Double
have width1
. These two exceptions have width2
, and their subsequent indices atindex() + 1
are considered unusable.- API Note:
- If this entry is loadable, the width
of this entry does not decide if this entry should be loaded with
ldc
orldc2_w
. For example,ConstantDynamicEntry
always has width1
, but it must be loaded withldc2_w
if its type islong
ordouble
. UsetypeKind().slotSize()
to determine the loading instruction instead. - Returns:
- the number of constant pool slots this entry consumes
- See Also:
-