2009-07-02 86 views
152

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

回答

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

此外,什么seth说。 :) – Stobor 2009-07-02 07:04:02

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; 
} 
+0

如果它是一个接口和类名是java.util.List你可能会创建ArrayList – 2017-12-21 19:47:11