Description
This could seem like a very minor thing but why not improve
the code once in a while...
Something like this could replace the current inefficient code:
public static List<Class<?>> getAllInterfaces(Class<?> clazz) { if (clazz == null) { return null; } HashSet<Class<?>> interfacesSet = new HashSet<Class<?>>(); LinkedList<Class<?>> interfacesList = new LinkedList<Class<?>>(); getAllInterfaces(clazz, interfacesSet, interfacesList); return interfacesList; } private static void getAllInterfaces( Class<?> clazz, HashSet<Class<?>> interfacesSet, List<Class<?>> interfacesList) { while (clazz != null) { Class<?>[] interfaces = clazz.getInterfaces(); for (Class<?> i : interfaces) { if (!interfacesSet.add(i)) { interfacesList.add(i); getAllInterfaces(i, interfacesSet, interfacesList); } } clazz = clazz.getSuperclass(); } }