Module java.base

Interface ClassDesc

    • Method Detail

      • 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.
        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 any argument is null
        IllegalArgumentException - if the name string is not in the correct format
        See The Java™ Virtual Machine Specification:
        4.3.2 Field Descriptors, 4.4.1 The CONSTANT_Class_info Structure
      • 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 zero or if the rank of the resulting array type is greater than 255
        See The Java™ Virtual Machine Specification:
        4.4.1 The CONSTANT_Class_info Structure
      • 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 any 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 is null
        IllegalStateException - if this ClassDesc does not describe a class or interface type
        IllegalArgumentException - if the nested class name is invalid
      • isClassOrInterface

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

        String descriptorString()
        Returns a field type descriptor string for this type
        Specified by:
        descriptorString in interface TypeDescriptor
        Returns:
        the descriptor string
        See The Java™ Virtual Machine Specification:
        4.3.2 Field Descriptors
      • 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