使用java的getClasses()方法

cov*_*bob 0 java reflection

我正在寻找关于getClasses()如何工作的一些说明.我正在尝试编写代码,给定一个String类名,找到扩展classname指定的类的所有类.我有一个名为getChildren()的方法来执行此操作.不幸的是,每次调用它时,该方法都会返回一个空集合.这是我的代码.

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;
} 


}
Run Code Online (Sandbox Code Playgroud)

Gar*_*all 5

getClasses返回当前类中包含的类.您想要找到从当前类继承的类.遗憾的是,Java API中没有允许您执行此操作的方法.

您可以查看已加载的类:如何列出在特定类加载器中加载的所有类