Package Summary Overview Summary

### class:ClassDesc [NONE]
All Superinterfaces: `ConstantDesc`, `TypeDescriptor`, `TypeDescriptor.OfField<ClassDesc>`
    public interface ClassDesc
    extends ConstantDesc, TypeDescriptor.OfField<ClassDesc>
A nominal descriptor for a `Class` constant. For common system types, including all the primitive types, there are predefined ClassDesc constants in `ConstantDescs`. (The `java.lang.constant` APIs consider `void` to be a primitive type.) To create a ClassDesc for a class or interface type, use `of(java.lang.String)` or `ofDescriptor(String)`; to create a ClassDesc for an array type, use `ofDescriptor(String)`, or first obtain a ClassDesc for the component type and then call the `arrayType()` or `arrayType(int)` methods. API Note: In the future, if the Java language permits, ClassDesc may become a `sealed` interface, which would prohibit subclassing except by explicitly permitted types. Non-platform classes should not implement ClassDesc directly. Since: 12 See Also: `ConstantDescs`

### method:of(java.lang.String) [NONE]
### of static ClassDesc of?(String name) Returns a ClassDesc for a class or interface type, given the name of the class or interface, such as `"java.lang.String"`. (To create a descriptor for an array type, either use `ofDescriptor(String)` or `arrayType()`; to create a descriptor for a primitive type, use `ofDescriptor(String)` or use the predefined constants in `ConstantDescs`). Parameters: `name` - the fully qualified (dot-separated) binary class name Returns: a ClassDesc describing the desired class Throws: `NullPointerException` - if the argument is `null` `IllegalArgumentException` - if the name string is not in the correct format

### method:of(java.lang.String,java.lang.String) [NONE]
### of static ClassDesc of?(String packageName, String className) Returns a ClassDesc for a class or interface type, given a package name and the unqualified (simple) name for the class or interface. Parameters: `packageName` - the package name (dot-separated); if the package name is the empty string, the class is considered to be in the unnamed package `className` - the unqualified (simple) class name Returns: a ClassDesc describing the desired class Throws: `NullPointerException` - if any argument is `null` `IllegalArgumentException` - if the package name or class name are not in the correct format

### method:ofDescriptor(java.lang.String) [NONE]
### ofDescriptor static ClassDesc ofDescriptor?(String descriptor) Returns a ClassDesc given a descriptor string for a class, interface, array, or primitive type. API Note: A field type descriptor string for a non-array type is either a one-letter code corresponding to a primitive type (`"J", "I", "C", "S", "B", "D", "F", "Z", "V"` ), or the letter `"L"`, followed by the fully qualified binary name of a class, followed by `";"`. A field type descriptor for an array type is the character `"["` followed by the field descriptor for the component type. Examples of valid type descriptor strings include `"Ljava/lang/String;"`, `"I"`, `"[I"`, `"V"`, `"[Ljava/lang/String;"`, etc. See JVMS 4.3.2 ("Field Descriptors") for more detail. Parameters: `descriptor` - a field descriptor string Returns: a ClassDesc describing the desired class Throws: `NullPointerException` - if the argument is `null` `IllegalArgumentException` - if the name string is not in the correct format

### method:arrayType() [NONE]
### arrayType default ClassDesc arrayType() Returns a ClassDesc for an array type whose component type is described by this ClassDesc. Specified by: `arrayType` in interface `TypeDescriptor.OfField<ClassDesc>` Returns: a ClassDesc describing the array type Throws: `IllegalStateException` - if the resulting ClassDesc would have an array rank of greater than 255

### method:arrayType(int) [NONE]
### arrayType default ClassDesc arrayType?(int rank) Returns a ClassDesc for an array type of the specified rank, whose component type is described by this ClassDesc. Parameters: `rank` - the rank of the array Returns: a ClassDesc describing the array type Throws: `IllegalArgumentException` - if the rank is less than or equal to zero or if the rank of the resulting array type is greater than 255

### method:nested(java.lang.String) [NONE]
### nested default ClassDesc nested?(String nestedName) Returns a ClassDesc for a nested class of the class or interface type described by this ClassDesc. API Note: Example: If descriptor `d` describes the class `java.util.Map`, a descriptor for the class `java.util.Map.Entry` could be obtained by `d.nested("Entry")`. Parameters: `nestedName` - the unqualified name of the nested class Returns: a ClassDesc describing the nested class Throws: `NullPointerException` - if the argument is `null` `IllegalStateException` - if this ClassDesc does not describe a class or interface type `IllegalArgumentException` - if the nested class name is invalid

### method:nested(java.lang.String,java.lang.String...) [NONE]
### nested default ClassDesc nested?(String firstNestedName, String... moreNestedNames) Returns a ClassDesc for a nested class of the class or interface type described by this ClassDesc. Parameters: `firstNestedName` - the unqualified name of the first level of nested class `moreNestedNames` - the unqualified name(s) of the remaining levels of nested class Returns: a ClassDesc describing the nested class Throws: `NullPointerException` - if any argument or its contents is `null` `IllegalStateException` - if this ClassDesc does not describe a class or interface type `IllegalArgumentException` - if the nested class name is invalid

### method:isArray() [NONE]
### isArray default boolean isArray() Returns whether this ClassDesc describes an array type. Specified by: `isArray` in interface `TypeDescriptor.OfField<ClassDesc>` Returns: whether this ClassDesc describes an array type

### method:isPrimitive() [NONE]
### isPrimitive default boolean isPrimitive() Returns whether this ClassDesc describes a primitive type. Specified by: `isPrimitive` in interface `TypeDescriptor.OfField<ClassDesc>` Returns: whether this ClassDesc describes a primitive type

### method:isClassOrInterface() [NONE]
### isClassOrInterface default boolean isClassOrInterface() Returns whether this ClassDesc describes a class or interface type. Returns: whether this ClassDesc describes a class or interface type

### method:componentType() [NONE]
### componentType default ClassDesc componentType() Returns the component type of this ClassDesc, if it describes an array type, or `null` otherwise. Specified by: `componentType` in interface `TypeDescriptor.OfField<ClassDesc>` Returns: a ClassDesc describing the component type, or `null` if this descriptor does not describe an array type

### method:packageName() [NONE]
### packageName default String packageName() Returns the package name of this ClassDesc, if it describes a class or interface type. Returns: the package name, or the empty string if the class is in the default package, or this ClassDesc does not describe a class or interface type

### method:displayName() [NONE]
### displayName default String displayName() Returns a human-readable name for the type described by this descriptor. Implementation Requirements: The default implementation returns the simple name (e.g., `int`) for primitive types, the unqualified class name for class or interface types, or the display name of the component type suffixed with the appropriate number of `[]` pairs for array types. Returns: the human-readable name

### method:descriptorString() [NONE]
### descriptorString String descriptorString() Returns a field type descriptor string for this type Specified by: `descriptorString` in interface `TypeDescriptor` Returns: the descriptor string

### method:equals(java.lang.Object) [NONE]
### equals boolean equals?(Object o) Compare the specified object with this descriptor for equality. Returns `true` if and only if the specified object is also a ClassDesc and both describe the same type. Overrides: `equals` in class `Object` Parameters: `o` - the other object Returns: whether this descriptor is equal to the other object See Also: `Object.hashCode()`, `HashMap`