Class ClassTypeSignature


  • public final class ClassTypeSignature
    extends HierarchicalTypeSignature
    A class type signature (called "ClassSignature" in the classfile documentation).
    • Field Detail

      • classInfo

        private final ClassInfo classInfo
        The class info.
      • typeParameters

        final java.util.List<TypeParameter> typeParameters
        The class type parameters.
      • superinterfaceSignatures

        private final java.util.List<ClassRefTypeSignature> superinterfaceSignatures
        The superinterface signatures.
      • throwsSignatures

        private final java.util.List<ClassRefOrTypeVariableSignature> throwsSignatures
        The throws signatures (usually null). These are only present in Scala classes, if the class is marked up with @throws, and they violate the classfile spec (#495), but we parse them anyway.
    • Constructor Detail

      • ClassTypeSignature

        private ClassTypeSignature​(ClassInfo classInfo,
                                   java.util.List<TypeParameter> typeParameters,
                                   ClassRefTypeSignature superclassSignature,
                                   java.util.List<ClassRefTypeSignature> superinterfaceSignatures,
                                   java.util.List<ClassRefOrTypeVariableSignature> throwsSignatures)
        Constructor.
        Parameters:
        classInfo - the ClassInfo object of the class.
        typeParameters - The class type parameters.
        superclassSignature - The superclass signature.
        superinterfaceSignatures - The superinterface signature(s).
        throwsSignatures - the throws signatures (these are actually invalid, but can be added by Scala: #495). Usually null.
      • ClassTypeSignature

        ClassTypeSignature​(ClassInfo classInfo,
                           ClassInfo superclass,
                           ClassInfoList interfaces)
        Constructor used to create synthetic class type descriptor (#662).
        Parameters:
        classInfo - The class.
        superclass - The superclass.
        interfaces - The implemented interfaces.
    • Method Detail

      • getTypeParameters

        public java.util.List<TypeParameter> getTypeParameters()
        Get the type parameters for the class.
        Returns:
        The type parameters for the class.
      • getSuperclassSignature

        public ClassRefTypeSignature getSuperclassSignature()
        Get the type signature for the superclass (possibly null in the case of Object, since it doesn't have a superclass).
        Returns:
        The type signature for the superclass, or null if no superclass (i.e. for Object).
      • getSuperinterfaceSignatures

        public java.util.List<ClassRefTypeSignature> getSuperinterfaceSignatures()
        Get the type signatures of any superinterfaces.
        Returns:
        The type signatures of any superinterfaces.
      • getThrowsSignatures

        java.util.List<ClassRefOrTypeVariableSignature> getThrowsSignatures()
        Gets the throws signatures. These are invalid according to the classfile spec (so this method is currently non-public), but may be added by the Scala compiler. (See bug #495.)
        Returns:
        the throws signatures
      • getClassInfo

        protected ClassInfo getClassInfo()
        Description copied from class: ScanResultObject
        Get the ClassInfo object for the referenced class, or null if the referenced class was not encountered during scanning (i.e. no ClassInfo object was created for the class during scanning). N.B. even if this method returns null, ScanResultObject.loadClass() may be able to load the referenced class by name.
        Overrides:
        getClassInfo in class ScanResultObject
        Returns:
        The ClassInfo object for the referenced class.
      • findReferencedClassNames

        protected void findReferencedClassNames​(java.util.Set<java.lang.String> refdClassNames)
        Get the names of any classes referenced in the type signature.
        Parameters:
        refdClassNames - the referenced class names.
      • findReferencedClassInfo

        protected void findReferencedClassInfo​(java.util.Map<java.lang.String,​ClassInfo> classNameToClassInfo,
                                               java.util.Set<ClassInfo> refdClassInfo,
                                               LogNode log)
        Get ClassInfo objects for any classes referenced in the type descriptor or type signature.
        Overrides:
        findReferencedClassInfo in class ScanResultObject
        Parameters:
        classNameToClassInfo - the map from class name to ClassInfo.
        refdClassInfo - the referenced class info
        log - the log
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • toStringInternal

        void toStringInternal​(java.lang.String className,
                              boolean useSimpleNames,
                              int modifiers,
                              boolean isAnnotation,
                              boolean isInterface,
                              AnnotationInfoList annotationsToExclude,
                              java.lang.StringBuilder buf)
        Render into String form.
        Parameters:
        className - The class name
        useSimpleNames - the use simple names
        modifiers - The class modifiers.
        isAnnotation - True if the class is an annotation.
        isInterface - True if the class is an interface.
        annotationsToExclude - the annotations to exclude
        buf - the buf
      • toStringInternal

        protected void toStringInternal​(boolean useSimpleNames,
                                        AnnotationInfoList annotationsToExclude,
                                        java.lang.StringBuilder buf)
        To string internal.
        Specified by:
        toStringInternal in class HierarchicalTypeSignature
        Parameters:
        useSimpleNames - the use simple names
        annotationsToExclude - the annotations to exclude
        buf - the buf
      • parse

        static ClassTypeSignature parse​(java.lang.String typeDescriptor,
                                        ClassInfo classInfo)
                                 throws ParseException
        Parse a class type signature or class type descriptor.
        Parameters:
        typeDescriptor - The class type signature or class type descriptor to parse.
        classInfo - the class info
        Returns:
        The parsed class type signature or class type descriptor.
        Throws:
        ParseException - If the class type signature could not be parsed.