Module java.base

Interface ClassDesc

All Superinterfaces:
ConstantDesc, TypeDescriptor, TypeDescriptor.OfField<ClassDesc>

public sealed 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.

Since:
12
See Also:
  • Method Details

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

      static ClassDesc ofDescriptor(String descriptor)
      Returns a ClassDesc given a descriptor string for a class, interface, array, or primitive type.
      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
    • 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
    • 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
    • nested

      default ClassDesc nested(String nestedName)
      Returns a ClassDesc for a nested class of the class or interface type described by this ClassDesc.
      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
    • 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
    • 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
    • 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
    • isClassOrInterface

      default boolean isClassOrInterface()
      Returns whether this ClassDesc describes a class or interface type.
      Returns:
      whether this ClassDesc describes a class or interface type
    • 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
    • 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
    • displayName

      default String displayName()
      Returns a human-readable name for the type described by this descriptor.
      Returns:
      the human-readable name
    • descriptorString

      String descriptorString()
      Returns a field type descriptor string for this type
      Specified by:
      descriptorString in interface TypeDescriptor
      Returns:
      the descriptor string
    • 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: