Interface IClassHierarchy
- All Known Implementing Classes:
ClassHierarchy
,CrossLanguageClassHierarchy
General interface for a type hierarchy
-
Method Summary
Modifier and TypeMethodDescriptionboolean
void
Clear internal caches that may be invalidated by addition of new classes, e.g., a cache of the results ofgetPossibleTargets(MethodReference)
.Return set of all subclasses of type in the Class HierarchygetImmediateSubclasses
(IClass klass) getImplementors
(TypeReference type) Solely for optimization; return a Collection<TypeReference> representing the subclasses of ErrorSolely for optimization; return a Collection<TypeReference> representing the subclasses ofRuntimeException
getLoader
(ClassLoaderReference loaderRef) int
int
int
getPossibleTargets
(IClass receiverClass, MethodReference ref) Find the possible targets of a call to a method reference where the receiver is of a certain typeFind the possible targets of a call to a method referencegetScope()
boolean
implementsInterface
(IClass c, IClass i) Does c implement i?boolean
isAssignableFrom
(IClass c1, IClass c2) Does an expression c1 x := c2 y typecheck?boolean
isInterface
(TypeReference type) boolean
boolean
isSubclassOf
(IClass c, IClass T) Is c a subclass of T?Load a class using one of the loaders specified for this class hierarchyresolveField
(IClass klass, FieldReference f) resolveMethod
(IClass receiverClass, Selector selector) Return the unique target of an invocation of method on an object of type receiverClassReturn the unique receiver of an invocation of method on an object of typem.getDeclaredClass()
.Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
-
Method Details
-
getFactory
ClassLoaderFactory getFactory() -
getScope
AnalysisScope getScope() -
getLoaders
IClassLoader[] getLoaders() -
getLoader
-
addClass
- Returns:
- true if the add succeeded; false if it failed for some reason
- Throws:
IllegalArgumentException
- if klass is null
-
getNumberOfClasses
int getNumberOfClasses()- Returns:
- The number of classes present in the class hierarchy.
-
isRootClass
-
getRootClass
IClass getRootClass() -
getNumber
-
getUnresolvedClasses
Set<TypeReference> getUnresolvedClasses() -
getPossibleTargets
Find the possible targets of a call to a method reference- Parameters:
ref
- method reference- Returns:
- the set of IMethods that this call can resolve to.
- Throws:
IllegalArgumentException
- if ref is null
-
getPossibleTargets
Find the possible targets of a call to a method reference where the receiver is of a certain type- Parameters:
receiverClass
- the class of the receiverref
- method reference- Returns:
- the set of IMethods that this call can resolve to.
-
resolveMethod
Return the unique receiver of an invocation of method on an object of typem.getDeclaredClass()
. Note that for Java,m.getDeclaredClass()
must represent a class, not an interface. This method does not work for finding inherited methods in interfaces.- Returns:
- IMethod, or null if no appropriate receiver is found.
- Throws:
IllegalArgumentException
- if m is null
-
resolveField
- Returns:
- the canonical IField that represents a given field , or null if none found
- Throws:
IllegalArgumentException
- if f is null
-
resolveField
- Returns:
- the canonical IField that represents a given field , or null if none found
- Throws:
IllegalArgumentException
- if f is nullIllegalArgumentException
- if klass is null
-
resolveMethod
Return the unique target of an invocation of method on an object of type receiverClass- Parameters:
receiverClass
- type of receiver. Note that for Java,receiverClass
must represent a class, not an interface. This method does not work for finding inherited methods in interfaces.selector
- method signature- Returns:
- Method resolved method abstraction
- Throws:
IllegalArgumentException
- if receiverClass is null
-
lookupClass
Load a class using one of the loaders specified for this class hierarchy- Returns:
- null if can't find the class.
- Throws:
IllegalArgumentException
- if A is null
-
isInterface
-
getLeastCommonSuperclass
-
getLeastCommonSuperclass
-
isSubclassOf
Is c a subclass of T?- Throws:
IllegalArgumentException
- if c is null
-
implementsInterface
-
computeSubClasses
Return set of all subclasses of type in the Class Hierarchy -
getJavaLangErrorTypes
Collection<TypeReference> getJavaLangErrorTypes()Solely for optimization; return a Collection<TypeReference> representing the subclasses of Errorkind of ugly. a better scheme?
-
getJavaLangRuntimeExceptionTypes
Collection<TypeReference> getJavaLangRuntimeExceptionTypes()Solely for optimization; return a Collection<TypeReference> representing the subclasses ofRuntimeException
kind of ugly. a better scheme?
-
getImplementors
- Parameters:
type
- an interface- Returns:
- Set of IClass that represent implementors of the interface
-
getNumberOfImmediateSubclasses
- Returns:
- the number of classes that immediately extend klass.
-
getImmediateSubclasses
- Returns:
- the classes that immediately extend klass.
-
isAssignableFrom
Does an expression c1 x := c2 y typecheck?i.e. is c2 a subtype of c1?
- Throws:
IllegalArgumentException
- if c1 is nullIllegalArgumentException
- if c2 is null
-
clearCaches
void clearCaches()Clear internal caches that may be invalidated by addition of new classes, e.g., a cache of the results ofgetPossibleTargets(MethodReference)
.
-