我正在寻找关于getClasses()如何工作的一些说明。我试图编写代码,给定一个String类名,找到扩展由classname指定的类的所有类。我有一个名为getChildren()的方法来做到这一点。不幸的是,每次我调用它时,该方法都会返回一个空的Collection。这是我的代码。使用java的getClasses()方法
import java.util.ArrayList;
import java.util.Collection;
public class ClassFinder {
private Class<?> myClass;
public ClassFinder(Class<?> clazz) {
myClass = clazz;
}
public ClassFinder (String className) throws ClassNotFoundException {
myClass = Class.forName(className);
}
public Collection<Class<?>> getChildren() {
Collection<Class<?>> children = new ArrayList<Class<?>>();
Class<?>[] relatedClasses = myClass.getClasses();
for (Class<?> potentialChild : relatedClasses) {
if (potentialChild.isAssignableFrom(myClass)) {
children.add(potentialChild);
}
}
return children;
}
}
如果您正在尝试编写某种插件框架,请查看[java.util.ServiceLoader](http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader。 HTML)为更好的方式来处理这个问题。 – jtahlborn