package spimedb.util; import java.util.HashSet; import java.util.Set; /** * * * Copyright 2003 Sapient * @since carbon 2.0 * @author Greg Hinkle, March 2003 * @version $Revision: 1.5 $($Author: dvoet $ / $Date: 2003/05/05 21:21:23 $) */ public class ClassUtil { /** * Retrieves all interfaces implemented by a specified interface * including all recursively extended interfaces and the classes supplied * int the parameter. * @param childInterfaces a set of interfaces * @return Class[] an array of interfaces that includes those specifed * in childInterfaces plus all of those interfaces' super interfaces */ public static Set<Class> getSuperInterfaces(Class... childInterfaces) { Set<Class> allInterfaces = new HashSet(); for (int i = 0; i < childInterfaces.length; i++) { Class c = childInterfaces[i]; allInterfaces.add(c); allInterfaces.addAll( getSuperInterfaces(c.getInterfaces())); } return allInterfaces; } public static Set<Class> getSuperInterfacesOf(Class c) { Set<Class> cs = getSuperInterfaces((Class[])new Class[] { c } ); cs.remove(c); return cs; } /** * Builds an <b>unordered</b> set of all interface and object classes that * are generalizations of the provided class. * @param classObject the class to find generalization of. * @return a Set of class objects. */ public static Set getGeneralizations(Class classObject) { Set generalizations = new HashSet(); generalizations.add(classObject); Class superClass = classObject.getSuperclass(); if (superClass != null) { generalizations.addAll(getGeneralizations(superClass)); } Class[] superInterfaces = classObject.getInterfaces(); for (int i = 0; i < superInterfaces.length; i++) { Class superInterface = superInterfaces[i]; generalizations.addAll(getGeneralizations(superInterface)); } return generalizations; } }