Class ClassHierarchy


  • public final class ClassHierarchy
    extends java.lang.Object
    This class takes the raw information from a ClassHierarchyProvider and computes type operations (subtype check, type union). All operations are static.

    Because ClassHierarchyProvider sometimes only provides partial information, these routines sometimes answer "don't know".

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int MAYBE
      Equals Constants.MAYBE
      static int NO
      Equals Constants.NO
      static int YES
      Equals Constants.YES
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String findCommonSupertype​(ClassHierarchyProvider hierarchy, java.lang.String t1, java.lang.String t2)
      Compute the most specific common supertype.
      static int isSubtypeOf​(ClassHierarchyProvider hierarchy, java.lang.String t1, java.lang.String t2)
      Perform subtype check.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • isSubtypeOf

        public static int isSubtypeOf​(ClassHierarchyProvider hierarchy,
                                      java.lang.String t1,
                                      java.lang.String t2)
        Perform subtype check.
        Parameters:
        hierarchy - the hierarchy information to use for the decision
        t1 - a type in JVM format
        t2 - a type in JVM format
        Returns:
        whether t1 is a subtype of t2 (YES, NO, MAYBE)
      • findCommonSupertype

        public static java.lang.String findCommonSupertype​(ClassHierarchyProvider hierarchy,
                                                           java.lang.String t1,
                                                           java.lang.String t2)
        Compute the most specific common supertype.
        Parameters:
        hierarchy - the hierarchy information to use for the decision
        t1 - a type in JVM format
        t2 - a type in JVM format
        Returns:
        the most specific common supertype of t1 and t2, or TYPE_unknown if it cannot be determined or cannot be represented as a Java type, or null if there is no common supertype