194

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

4

3 回答 3

337

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

这个链接应该有帮助。

 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()

于 2009-07-02T07:01:16.680 回答
33
Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());
于 2009-07-02T07:03:46.973 回答
2
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;
}
于 2017-12-21T19:36:53.230 回答