class ClassAncestry
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private static java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.util.List<java.lang.Class<?>>> |
_ancestryCache |
Constructor and Description |
---|
ClassAncestry() |
Modifier and Type | Method and Description |
---|---|
private static java.util.List<java.lang.Class<?>> |
computeAncestry(java.lang.Class<?> c)
Starting with children and going back to parents
|
private static <T> void |
computeAncestry(java.lang.Class<T> c,
java.util.List<java.lang.Class<?>> result) |
static <T> java.util.List<java.lang.Class<?>> |
getAncestry(java.lang.Class<T> c)
Walks superclass and interface graph, superclasses first, then interfaces, to compute an ancestry list.
|
private static java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.util.List<java.lang.Class<?>>> |
getClassAncestryCache()
classAncestryCache
|
private static final java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.util.List<java.lang.Class<?>>> _ancestryCache
public static <T> java.util.List<java.lang.Class<?>> getAncestry(java.lang.Class<T> c)
Walks superclass and interface graph, superclasses first, then interfaces, to compute an ancestry list. Supertypes are visited left to right. Duplicates are removed such that no Class will appear in the list before one of its subtypes.
Does not need to be synchronized, races are harmless as the Class graph does not change at runtime.
private static java.util.List<java.lang.Class<?>> computeAncestry(java.lang.Class<?> c)
private static <T> void computeAncestry(java.lang.Class<T> c, java.util.List<java.lang.Class<?>> result)
private static java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.util.List<java.lang.Class<?>>> getClassAncestryCache()