Interface ClassEntry
- All Superinterfaces:
LoadableConstantEntry, PoolEntry
Models a
where
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)
name represents:
- The internal form of a binary name (JVMS 4.2.1), if and only if
this
ClassEntryrepresents a class or interface, such asjava/lang/Stringfor theStringclass. - A field descriptor string (JVMS 4.3.2) representing an array type,
if and only if this
ClassEntryrepresents an array type, such as[Ifor theint[]type, or[Ljava/lang/String;for theString[]type.
'[' 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_infoStructure - Since:
- 24
- See Also:
-
Field Summary
Fields declared in interface PoolEntry
TAG_CLASS, TAG_DOUBLE, TAG_DYNAMIC, TAG_FIELDREF, TAG_FLOAT, TAG_INTEGER, TAG_INTERFACE_METHODREF, TAG_INVOKE_DYNAMIC, TAG_LONG, TAG_METHOD_HANDLE, TAG_METHOD_TYPE, TAG_METHODREF, TAG_MODULE, TAG_NAME_AND_TYPE, TAG_PACKAGE, TAG_STRING, TAG_UTF8Modifier and TypeFieldDescriptionstatic final intThe tag forCONSTANT_Classconstant kind.static final intThe tag forCONSTANT_Doubleconstant kind.static final intThe tag forCONSTANT_Dynamicconstant kind.static final intThe tag forCONSTANT_Fieldrefconstant kind.static final intThe tag forCONSTANT_Floatconstant kind.static final intThe tag forCONSTANT_Integerconstant kind.static final intThe tag forCONSTANT_InterfaceMethodrefconstant kind.static final intThe tag forCONSTANT_InvokeDynamicconstant kind.static final intThe tag forCONSTANT_Longconstant kind.static final intThe tag forCONSTANT_MethodHandleconstant kind.static final intThe tag forCONSTANT_MethodTypeconstant kind.static final intThe tag forCONSTANT_Methodrefconstant kind.static final intThe tag forCONSTANT_Moduleconstant kind.static final intThe tag forCONSTANT_NameAndTypeconstant kind.static final intThe tag forCONSTANT_Packageconstant kind.static final intThe tag forCONSTANT_Stringconstant kind.static final intThe tag forCONSTANT_Utf8constant kind. -
Method Summary
Modifier and TypeMethodDescriptionReturns the represented reference type, as the internal form of a binary name or an array descriptor string.asSymbol()Returns the represented reference type, as a symbolic descriptor.default ConstantDescReturns a symbolic descriptor of this constant.booleanReturns whether this entry describes the given reference type.name()Returns theUtf8Entryreferred by this structure.Methods declared in interface LoadableConstantEntry
typeKindMethods declared in interface PoolEntry
constantPool, index, tag, widthModifier and TypeMethodDescriptionReturns the constant pool this entry is from.intindex()Returns the index within the constant pool corresponding to this entry.inttag()Returns the constant pool tag that describes the type of this entry.intwidth()Returns the number of constant pool slots this entry consumes.
-
Method Details
-
constantValue
Returns a symbolic descriptor of this constant.This is equivalent to
asSymbol().- Specified by:
constantValuein interfaceLoadableConstantEntry- Returns:
- a symbolic descriptor of this constant
- See Also:
-
name
Utf8Entry name()Returns theUtf8Entryreferred 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
Utf8Entryreferred 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 forname().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,
matchesshould be used. It requires reduced parsing and can improveclassfile reading performance. - Returns:
- the represented reference type, as a symbolic descriptor
- See Also:
-
matches
Returns whether this entry describes the given reference type. Returnsfalseifdescis primitive.- Parameters:
desc- the reference type- Returns:
- whether this entry describes the given reference type
- Since:
- 25
-