web-dev-qa-db-fra.com

Comment déterminer si une classe Java est abstraite par réflexion

J'interagis à travers les classes dans un fichier Jar et souhaite trouver celles qui ne sont pas abstraites. Je peux résoudre ce problème en instanciant les classes et en capturant InstantiationException, mais cela a un impact négatif sur les performances car certaines classes ont un démarrage important. Je ne trouve rien qui ressemble évidemment à isAbstract () dans les documents Class.Java.

164
peter.murray.rust

Il aura abstract comme modificateur lorsque vous appelez getModifiers () sur l’objet class.

Ce link devrait aider.

 Modifier.isAbstract( someClass.getModifiers() );

Également:

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
Abdushkur Ablimit