Class ClassHierarchy

java.lang.Object
com.ibm.wala.shrike.shrikeBT.analysis.ClassHierarchy

public final class ClassHierarchy extends 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 Details

  • Method Details

    • isSubtypeOf

      public static int isSubtypeOf(ClassHierarchyProvider hierarchy, String t1, 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 String findCommonSupertype(ClassHierarchyProvider hierarchy, String t1, 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