Skip to content

Instantly share code, notes, and snippets.

@dennislaumen
Created September 7, 2012 07:46
Show Gist options
  • Save dennislaumen/3664163 to your computer and use it in GitHub Desktop.
Save dennislaumen/3664163 to your computer and use it in GitHub Desktop.
Playing around with generating class hierarchies.
package classhierarchy;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
public class ClassHierarchyGenerator {
public static void main(String... args) {
Class<?> c = ArrayList.class;
System.out.println(getClassHierarchy(c));
}
public static Set<Class<?>> getClassHierarchy(Class<?> clazz) {
Set<Class<?>> classHierarchy = new HashSet<>();
Class<?> superclass = clazz.getSuperclass();
if (classHierarchy.contains(superclass) || superclass == null) {
return classHierarchy;
}
classHierarchy.add(superclass);
classHierarchy.addAll(getClassHierarchy(superclass));
for (Class currentInterface : clazz.getInterfaces()) {
classHierarchy.add(currentInterface);
classHierarchy.addAll(getClassHierarchy(currentInterface));
}
return classHierarchy;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment