APIdia Launch Partner
Top Description Fields Methods
java.lang.classfile.constantpool

public sealed Interface PoolEntry

permits AnnotationConstantValueEntry, DynamicConstantPoolEntry, LoadableConstantEntry, MemberRefEntry, ModuleEntry, NameAndTypeEntry, PackageEntry
Known Direct Subinterfaces
java.lang.classfile.constantpool.AnnotationConstantValueEntry, java.lang.classfile.constantpool.DynamicConstantPoolEntry, java.lang.classfile.constantpool.LoadableConstantEntry, java.lang.classfile.constantpool.MemberRefEntry, java.lang.classfile.constantpool.ModuleEntry, java.lang.classfile.constantpool.NameAndTypeEntry, java.lang.classfile.constantpool.PackageEntry
Imports
java.lang.classfile.Attribute, .ClassFileBuilder, .Opcode, .TypeKind

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.

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.

Implementation Note

Since
24
See Also
Alien Constant Pool Entries

Field Summary

Modifier and TypeField and Description
public static final int
TAG_CLASS

The tag for CONSTANT_Class constant kind.

public static final int
TAG_DOUBLE

The tag for CONSTANT_Double constant kind.

public static final int
TAG_DYNAMIC

The tag for CONSTANT_Dynamic constant kind.

public static final int
TAG_FIELDREF

The tag for CONSTANT_Fieldref constant kind.

public static final int
TAG_FLOAT

The tag for CONSTANT_Float constant kind.

public static final int
TAG_INTEGER

The tag for CONSTANT_Integer constant kind.

public static final int
public static final int
public static final int
TAG_LONG

The tag for CONSTANT_Long constant kind.

public static final int
public static final int
TAG_METHOD_TYPE

The tag for CONSTANT_MethodType constant kind.

public static final int
TAG_METHODREF

The tag for CONSTANT_Methodref constant kind.

public static final int
TAG_MODULE

The tag for CONSTANT_Module constant kind.

public static final int
public static final int
TAG_PACKAGE

The tag for CONSTANT_Package constant kind.

public static final int
TAG_STRING

The tag for CONSTANT_String constant kind.

public static final int
TAG_UTF8

The tag for CONSTANT_Utf8 constant kind.

Method Summary

Modifier and TypeMethod and Description
public ConstantPool

Returns:

the constant pool this entry is from
constantPool
()

Returns the constant pool this entry is from.

public int

Returns:

the index within the constant pool corresponding to this entry
index
()

Returns the index within the constant pool corresponding to this entry.

public int

Returns:

the constant pool tag that describes the type of this entry
tag
()

Returns the constant pool tag that describes the type of this entry.

public int

Returns:

the number of constant pool slots this entry consumes
width
()

Returns the number of constant pool slots this entry consumes.

Field Detail

TAG_CLASSback to summary
public static final int TAG_CLASS

The tag for CONSTANT_Class constant kind.

TAG_DOUBLEback to summary
public static final int TAG_DOUBLE

The tag for CONSTANT_Double constant kind.

TAG_DYNAMICback to summary
public static final int TAG_DYNAMIC

The tag for CONSTANT_Dynamic constant kind.

TAG_FIELDREFback to summary
public static final int TAG_FIELDREF

The tag for CONSTANT_Fieldref constant kind.

TAG_FLOATback to summary
public static final int TAG_FLOAT

The tag for CONSTANT_Float constant kind.

TAG_INTEGERback to summary
public static final int TAG_INTEGER

The tag for CONSTANT_Integer constant kind.

TAG_INTERFACE_METHODREFback to summary
public static final int TAG_INTERFACE_METHODREF

The tag for CONSTANT_InterfaceMethodref constant kind.

TAG_INVOKE_DYNAMICback to summary
public static final int TAG_INVOKE_DYNAMIC

The tag for CONSTANT_InvokeDynamic constant kind.

TAG_LONGback to summary
public static final int TAG_LONG

The tag for CONSTANT_Long constant kind.

TAG_METHOD_HANDLEback to summary
public static final int TAG_METHOD_HANDLE

The tag for CONSTANT_MethodHandle constant kind.

TAG_METHOD_TYPEback to summary
public static final int TAG_METHOD_TYPE

The tag for CONSTANT_MethodType constant kind.

TAG_METHODREFback to summary
public static final int TAG_METHODREF

The tag for CONSTANT_Methodref constant kind.

TAG_MODULEback to summary
public static final int TAG_MODULE

The tag for CONSTANT_Module constant kind.

TAG_NAME_AND_TYPEback to summary
public static final int TAG_NAME_AND_TYPE

The tag for CONSTANT_NameAndType constant kind.

TAG_PACKAGEback to summary
public static final int TAG_PACKAGE

The tag for CONSTANT_Package constant kind.

TAG_STRINGback to summary
public static final int TAG_STRING

The tag for CONSTANT_String constant kind.

TAG_UTF8back to summary
public static final int TAG_UTF8

The tag for CONSTANT_Utf8 constant kind.

Method Detail

constantPoolback to summary
public 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:ConstantPool

the constant pool this entry is from

See Also
Unbound Constant Pool Entries
indexback to summary
public 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:int

the index within the constant pool corresponding to this entry

See Also
Unbound Constant Pool Entries
tagback to summary
public 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:int

the constant pool tag that describes the type of this entry

widthback to summary
public 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:int

the number of constant pool slots this entry consumes

See Also
Index in the Constant Pool