有没有办法列出java包中的所有抽象类?例如,在 java.lang 包中。
问问题
572 次
2 回答
1
使用 Guava 的ClassPath
类,您可以列出包中的所有顶级类。然后,您可以使用Modifier
该类来确定该类是否为abstract
.
这是一个小例子
public static void main(String[] args) throws IOException {
ClassPath p = ClassPath.from(ClassLoader.getSystemClassLoader()); // might need to provide different ClassLoader
ImmutableSet<ClassInfo> classes = p.getTopLevelClasses("com.example");
for (ClassInfo classInfo : classes) {
Class clazz = classInfo.load();
int modifiers = clazz.getModifiers();
if (Modifier.isAbstract(modifiers)) {
System.out.println("Class '" + clazz.getName() + "' is abstract.");
}
}
}
于 2013-09-29T18:37:02.530 回答
1
通过反射获取包中的类列表,然后通过执行检查该类是否是抽象的
Modifier.isAbstract( theClass.getModifiers() );
于 2013-09-29T18:30:23.030 回答