2009-07-02 6 views
152

Sto interagendo con le classi in un file Jar e desidero trovare quelle che non sono astratte. Posso risolvere questo istanziando le classi e intrappolando InstantiationException ma questo ha un impatto sulle prestazioni poiché alcune classi hanno un avvio pesante. Non riesco a trovare nulla ovviamente come isAbstract() nei documenti Class.java.Come determinare se una classe Java è astratta per riflessione

risposta

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

Inoltre, quello che seth ha detto. :) – Stobor

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

se è un'interfaccia e il nome della classe è java.util.List, come si può creare ArrayList –