W3cubDocs

/OpenJDK 25

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 a class file. Their index() return a non-positive invalid value, and behaviors of their constantPool() are unspecified. They are considered alien to any contextual constant pool and will be converted when they are written to class files.
Sealed Class Hierarchy Graph:
Sealed class hierarchy graph for PoolEntrySealed class hierarchy graph for PoolEntry
Since:
24
See Also:

Field Summary

Modifier and Type Field Description
static final int TAG_CLASS
The tag for CONSTANT_Class constant kind.
static final int TAG_DOUBLE
The tag for CONSTANT_Double constant kind.
static final int TAG_DYNAMIC
The tag for CONSTANT_Dynamic constant kind.
static final int TAG_FIELDREF
The tag for CONSTANT_Fieldref constant kind.
static final int TAG_FLOAT
The tag for CONSTANT_Float constant kind.
static final int TAG_INTEGER
The tag for CONSTANT_Integer constant kind.
static final int TAG_INTERFACE_METHODREF
The tag for CONSTANT_InterfaceMethodref constant kind.
static final int TAG_INVOKE_DYNAMIC
The tag for CONSTANT_InvokeDynamic constant kind.
static final int TAG_LONG
The tag for CONSTANT_Long constant kind.
static final int TAG_METHOD_HANDLE
The tag for CONSTANT_MethodHandle constant kind.
static final int TAG_METHOD_TYPE
The tag for CONSTANT_MethodType constant kind.
static final int TAG_METHODREF
The tag for CONSTANT_Methodref constant kind.
static final int TAG_MODULE
The tag for CONSTANT_Module constant kind.
static final int TAG_NAME_AND_TYPE
The tag for CONSTANT_NameAndType constant kind.
static final int TAG_PACKAGE
The tag for CONSTANT_Package constant kind.
static final int TAG_STRING
The tag for CONSTANT_String constant kind.
static final int TAG_UTF8
The tag for CONSTANT_Utf8 constant kind.

Method Summary

Modifier and Type Method Description
ConstantPool constantPool()
Returns 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

static final int TAG_CLASS
The tag for CONSTANT_Class constant kind.
See Also:

TAG_DOUBLE

static final int TAG_DOUBLE
The tag for CONSTANT_Double constant kind.
See Also:

TAG_DYNAMIC

static final int TAG_DYNAMIC
The tag for CONSTANT_Dynamic constant kind.
See Also:

TAG_FIELDREF

static final int TAG_FIELDREF
The tag for CONSTANT_Fieldref constant kind.
See Also:

TAG_FLOAT

static final int TAG_FLOAT
The tag for CONSTANT_Float constant kind.
See Also:

TAG_INTEGER

static final int TAG_INTEGER
The tag for CONSTANT_Integer constant kind.
See Also:

TAG_INTERFACE_METHODREF

static final int TAG_INTERFACE_METHODREF
The tag for CONSTANT_InterfaceMethodref constant kind.
See Also:

TAG_INVOKE_DYNAMIC

static final int TAG_INVOKE_DYNAMIC
The tag for CONSTANT_InvokeDynamic constant kind.
See Also:

TAG_LONG

static final int TAG_LONG
The tag for CONSTANT_Long constant kind.
See Also:

TAG_METHOD_HANDLE

static final int TAG_METHOD_HANDLE
The tag for CONSTANT_MethodHandle constant kind.
See Also:

TAG_METHODREF

static final int TAG_METHODREF
The tag for CONSTANT_Methodref constant kind.
See Also:

TAG_METHOD_TYPE

static final int TAG_METHOD_TYPE
The tag for CONSTANT_MethodType constant kind.
See Also:

TAG_MODULE

static final int TAG_MODULE
The tag for CONSTANT_Module constant kind.
See Also:

TAG_NAME_AND_TYPE

static final int TAG_NAME_AND_TYPE
The tag for CONSTANT_NameAndType constant kind.
See Also:

TAG_PACKAGE

static final int TAG_PACKAGE
The tag for CONSTANT_Package constant kind.
See Also:

TAG_STRING

static final int TAG_STRING
The tag for CONSTANT_String constant kind.
See Also:

TAG_UTF8

static final int TAG_UTF8
The tag for CONSTANT_Utf8 constant kind.
See Also:

Method Details

constantPool

ConstantPool constantPool()
Returns the constant pool this entry is from.
API Note:
Given a ConstantPoolBuilder builder and a PoolEntry entry, use builder.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 as TAG_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 and CONSTANT_Double have width 1. These two exceptions have width 2, and their subsequent indices at index() + 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 or ldc2_w. For example, ConstantDynamicEntry always has width 1, but it must be loaded with ldc2_w if its type is long or double. Use typeKind().slotSize() to determine the loading instruction instead.
Returns:
the number of constant pool slots this entry consumes
See Also:

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/classfile/constantpool/PoolEntry.html