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:
  • 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