在Java包中列出抽象类

时间:2013-09-29 18:25:49

标签: java abstract-class java-package

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

2 个答案:

答案 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.");
        }
    }
}