在我的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值?
提前致谢
答案 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);