2009-07-02 9 views
152

Estoy intentado a través de las clases en un archivo Jar y deseo encontrar aquellas que no son abstractas. Puedo resolver esto instanciando las clases y atrapando InstantiationException, pero eso tiene un impacto en el rendimiento, ya que algunas clases tienen un arranque complicado. No puedo encontrar nada obviamente como isAbstract() en los documentos de Class.java.¿Cómo puedo determinar si una clase Java es abstracta por reflexión?

Respuesta

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

Además, lo que dice. :) – 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

si es una interfaz y el nombre de clase es java.util.List es posible que usted cree ArrayList –

Cuestiones relacionadas