W3cubDocs

/OpenJDK 25

Interface ClassEntry

All Superinterfaces:
LoadableConstantEntry, PoolEntry
public sealed interface ClassEntry extends LoadableConstantEntry
Models a CONSTANT_Class_info structure, representing a reference type, in the constant pool of a class file.

The use of a ClassEntry is modeled by a ClassDesc that is not primitive. Conversions are through ConstantPoolBuilder.classEntry(ClassDesc) and asSymbol().

A ClassEntry is composite:

ClassEntry(Utf8Entry name)
where name represents:
  • The internal form of a binary name (JVMS 4.2.1), if and only if this ClassEntry represents a class or interface, such as java/lang/String for the String class.
  • A field descriptor string (JVMS 4.3.2) representing an array type, if and only if this ClassEntry represents an array type, such as [I for the int[] type, or [Ljava/lang/String; for the String[] type.
A field descriptor string for an array type can be distinguished by its leading '[' character.
API Note:
The internal form of a binary name, where all occurrences of . in the name are replaced by /, is informally known as an internal name. This concept also applies to package names in addition to class and interface names.
See Java Virtual Machine Specification:
4.4.1 The CONSTANT_Class_info Structure
Since:
24
See Also:

Field Summary

Method Summary

Modifier and Type Method Description
String asInternalName()
Returns the represented reference type, as the internal form of a binary name or an array descriptor string.
ClassDesc asSymbol()
Returns the represented reference type, as a symbolic descriptor.
default ConstantDesc constantValue()
Returns a symbolic descriptor of this constant.
boolean matches(ClassDesc desc)
Returns whether this entry describes the given reference type.
Utf8Entry name()
Returns the Utf8Entry referred by this structure.

Methods declared in interface LoadableConstantEntry

typeKind

Methods declared in interface PoolEntry

constantPool, index, tag, width

Method Details

constantValue

default ConstantDesc constantValue()
Returns a symbolic descriptor of this constant.

This is equivalent to asSymbol().

Specified by:
constantValue in interface LoadableConstantEntry
Returns:
a symbolic descriptor of this constant
See Also:

name

Utf8Entry name()
Returns the Utf8Entry referred by this structure. If the value of the UTF8 starts with a [, this represents an array type and the value is a descriptor string; otherwise, this represents a class or interface and the value is the internal form of a binary name.
Returns:
the Utf8Entry referred by this structure
See Also:

asInternalName

String asInternalName()
Returns the represented reference type, as the internal form of a binary name or an array descriptor string. This is a shortcut for name().stringValue().
Returns:
the represented reference type, as the internal form of a binary name or an array descriptor string

asSymbol

ClassDesc asSymbol()
Returns the represented reference type, as a symbolic descriptor. The returned descriptor is never primitive.
API Note:
If only symbol equivalence is desired, matches should be used. It requires reduced parsing and can improve class file reading performance.
Returns:
the represented reference type, as a symbolic descriptor
See Also:

matches

boolean matches(ClassDesc desc)
Returns whether this entry describes the given reference type. Returns false if desc is primitive.
Parameters:
desc - the reference type
Returns:
whether this entry describes the given reference type
Since:
25

© 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/ClassEntry.html