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