ClassUtil { public static List<Class<?>> getAllSuperclasses(Class<?> clazz) { if (clazz == null) { return null; } List<Class<?>> classes = CollectionUtil.createArrayList(); Class<?> superclass = clazz.getSuperclass(); while (superclass != null && superclass != Object.class) { classes.add(superclass); superclass = superclass.getSuperclass(); } return classes; }  static String getClassNameAsResource(String className); static Class<?> getPrimitiveType(String name); static Class<?> getPrimitiveType(Class<?> type); @SuppressWarnings("unchecked") static Class<T> getWrapperTypeIfPrimitive(Class<T> type); static T getPrimitiveDefaultValue(Class<T> type); static boolean isPrimitiveOrWrapper(Class<?> clazz); static Class<?> getArrayClass(Class<?> componentType); static Class<?> getArrayClass(Class<?> componentClass, int dimension); static Class<?> getArrayComponentType(Class<?> type); static boolean isInstance(Class<?> clazz, Object object); static boolean canInstatnce(Class<T> clazz); static List<Class<?>> getAllSuperclasses(Class<?> clazz); static Class<?>[] getAllSuperclassesAsArray(Class<?> clazz); static List<Class<?>> getAllInterfaces(Class<?> clazz); static Class<?>[] getAllInterfacesAsArray(Class<?> clazz); static Set<Class<?>> getAllInterfacesAsSet(Class<?> clazz, ClassLoader classLoader); static boolean isVisible(Class<?> clazz, ClassLoader classLoader); static boolean isCacheSafe(Class<?> clazz, ClassLoader classLoader); static boolean isInterfaceImpl(Class<?> thisClass, Class<?> targetInterface); static boolean isSubClass(Class<?> thisClass, Class<?> target); static boolean isAssignable(Class<?>[] classes, Class<?>[] fromClasses); static boolean isAssignable(Class<?> clazz, Class<?> fromClass); static String locateClass(Class<?> clazz); static String locateClass(String className); static String locateClass(String className, ClassLoader loader); static String getFriendlyClassNameForObject(Object object); static String getFriendlyClassName(Class<?> clazz); static String getFriendlyClassName(String javaClassName); static String getSimpleClassNameForObject(Object object); static String getSimpleClassNameForObject(Object object, boolean processInnerClass); static String getSimpleClassName(Class<?> clazz); static String getSimpleClassName(Class<?> clazz, boolean proccessInnerClass); static String getSimpleClassName(String javaClassName); static String getSimpleClassName(String javaClassName, boolean proccesInnerClass); static String getSimpleMethodSignature(Method method); static String getSimpleMethodSignature(Method method, boolean withClassName); static String getSimpleMethodSignature(Method method, boolean withModifiers, boolean withReturnType,
            boolean withClassName, boolean withExceptionType); static String getShortClassName(String className); static String getShortClassName(Class<?> clazz); static final char INNER_CLASS_SEPARATOR_CHAR; static final String INNER_CLASS_SEPARATOR; }
@Test public void getAllSuperclasses() { assertEquals(null, ClassUtil.getAllSuperclasses(null)); assertTrue(ClassUtil.getAllSuperclasses(Object.class).isEmpty()); assertTrue(ClassUtil.getAllSuperclasses(String.class).isEmpty()); List<Class<?>> supers = ClassUtil.getAllSuperclasses(ArrayList.class); assertTrue(supers.contains(AbstractList.class)); assertTrue(supers.contains(AbstractCollection.class)); assertFalse(supers.contains(List.class)); assertFalse(supers.contains(Object.class)); assertTrue(ClassUtil.getAllSuperclasses(int.class).isEmpty()); assertTrue(ClassUtil.getAllSuperclasses(int[].class).isEmpty()); assertTrue(ClassUtil.getAllSuperclasses(Integer.class).contains(Number.class)); assertTrue(ClassUtil.getAllSuperclasses(Integer[].class).isEmpty()); }