获取扩展特定类的所有类名

时间:2014-11-27 10:19:45

标签: java

在我的java项目中,我需要从扩展另一个类的每个类中获取一个变量。我的问题是我不知道这些类的名称。假设我的classtree看起来像这样:

Package
 - MyProject
 - BaseClass
 - Class 1 extends BaseClass
 - Class 2 extends BaseClass
 - Class 3 extends BaseClass
 - Class 4
 - Class 5

现在每个扩展BaseClass的Class都有一个变量baseVariable,我需要在MyProject中获取它的值。有没有办法获得扩展BaseClass的类列表,那么我可以访问baseVariable值?

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以使用Guava中的ClassPath执行此操作。

    ClassPath cp = ClassPath.from(ClassLoader.getSystemClassLoader());
    for (ClassPath.ClassInfo n : cp.getAllClasses()) {
        Class cl = n.load();
        if (BaseClass.isAssignableFrom(cl)) {
        }
    }

答案 1 :(得分:1)

您可以使用Reflections

Set<Class<? extends BaseClass>> subclasses = reflections.getSubTypesOf(BaseClass.class);