有没有办法列出java包中的所有抽象类?例如,在java.lang包中。
答案 0 :(得分:1)
通过反射获取包中的类列表,然后通过执行
检查类是否是抽象的Modifier.isAbstract( theClass.getModifiers() );
Can you find all classes in a package using reflection?
How can I determine whether a Java class is abstract by reflection
答案 1 :(得分: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.");
}
}
}