0

有没有办法列出java包中的所有抽象类?例如,在 java.lang 包中。

4

2 回答 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() );

您可以使用反射找到包中的所有类吗?

如何通过反射确定 Java 类是否是抽象的

于 2013-09-29T18:30:23.030 回答