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

时间:2009-07-02 06:58:33

标签: java class abstract

我正在通过Jar文件中的类进行交互,并希望找到那些不是抽象的文件。我可以通过实例化类和捕获InstantiationException来解决这个问题,但由于某些类具有大量启动,因此性能受到影响。我在Class.java文档中找不到任何明显像isAbstract()的东西。

3 个答案:

答案 0 :(得分:296)

当你在类对象上调用getModifiers()时,它会将abstract作为其修饰符之一。

link应该会有所帮助。

 Modifier.isAbstract( someClass.getModifiers() );

此外:

http://java.sun.com/javase/6/docs/api/java/lang/reflect/Modifier.html

http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getModifiers()

答案 1 :(得分:30)

Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());

答案 2 :(得分:0)

public static boolean isInstantiable(Class<?> clz) {
    if(clz.isPrimitive() || Modifier.isAbstract( clz.getModifiers()) ||clz.isInterface()  || clz.isArray() || String.class.getName().equals(clz.getName()) || Integer.class.getName().equals(clz.getName())){
        return false;
    }
    return true;
}