wake-up-neo.net

Wie kann ich feststellen, ob eine Java-Klasse durch Reflektion abstrakt ist?

Ich interagiere durch Klassen in einer Jar-Datei und möchte diejenigen finden, die nicht abstrakt sind. Ich kann dieses Problem lösen, indem ich die Klassen instanziiere und InstantiationException abfange. Dies hat jedoch einen Performance-Hit, da einige Klassen einen starken Start haben. Ich kann nichts offensichtlich wie isAbstract () in den Class.Java-Dokumenten finden.

164

Es hat abstract als einen seiner Modifizierer, wenn Sie getModifiers () für das Klassenobjekt aufrufen.

Dieser Link sollte helfen.

 Modifier.isAbstract( someClass.getModifiers() );

Ebenfalls:

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

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