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

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

58738 次浏览

It'll have abstract as one of its modifiers when you call getModifiers() on the class object.

This link should help.

 Modifier.isAbstract( someClass.getModifiers() );

Also:

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

Class myClass = myJar.load("classname");
bool test = Modifier.isAbstract(myClass.getModifiers());
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;
}