1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public static Plugin loadPlugin(String name)
throws ClassNotFoundException, ClassCastException,
InstantiationException, IllegalAccessException {
// On récupère la classe par reflection depuis son non
Class pluginClass = Class.forName(name);
// On vérifie que la classe obtenu est bien assignable en tant de Plugin
// c'est à dire qu'elle implémente l'interface Plugin
if ( Plugin.class.isAssignableFrom(pluginClass) ) {
return (Plugin) pluginClass.newInstance();
}
// Sinon on renvoit une exception
throw new ClassCastException("The class " + name
+ " MUST implements " + Plugin.class.getName());
} |