2009-07-02 66 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