Instanciation dynamique d'une classe
Bonjour,
J'ai un problème d'instanciation dynamique.
J'ai le besoin, dans mon code, d'instancier une class sans la connaitre, juste en ayant son nom.
Toutes les class à instancier ont le même prototype, hérité d'une grande class mère.
Voici comment j'instancie :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
//bMeta.getAuthor() - String
//bMeta.getTitle() - String
//bMeta.getPages() - List<String>
//bookName - String
//t.getClassType() - String contenant le nom de la class
try
{
Class<?> cl = Class.forName(t.getClassType());
Constructor<?> ct = cl.getConstructor(String.class, String.class, String.class, List.class, Boolean.class, Integer.class);
b = (BookBase)ct.newInstance(bookName, bMeta.getAuthor(), bMeta.getTitle(), bMeta.getPages(), false, 1);
}catch (SecurityException e) {
Main.plugin.getLogger().warning("Erreur a la creation de " + bookName + " : " + e.getMessage());
} catch (IllegalArgumentException e) {
Main.plugin.getLogger().warning("Erreur a la creation de " + bookName + " : " + e.getMessage());
} catch (ClassNotFoundException e) {
Main.plugin.getLogger().warning("Erreur a la creation de " + bookName + " : " + e.getMessage());
} catch (InstantiationException e) {
Main.plugin.getLogger().warning("Erreur a la creation de " + bookName + " : " + e.getMessage());
} catch (IllegalAccessException e) {
Main.plugin.getLogger().warning("Erreur a la creation de " + bookName + " : " + e.getMessage());
} catch (NoSuchMethodException e) {
Main.plugin.getLogger().warning("Erreur a la creation de " + bookName + " : " + e.getMessage());
} catch (InvocationTargetException e) {
Main.plugin.getLogger().warning("Erreur a la creation de " + bookName + " : " + e.getMessage());
} |
Voici le protorype appelé :
Code:
1 2 3 4 5
|
public BookBase(String name, String author, String title, List<String> pages, boolean unique, int mana)
{
// du code ....
} |
Le programme compile normalement, mais je reçois une erreur lors de l'instanciation de la class
Erreur a la creation de tptest : fr.nico69.SpellBooks.books.BookTeleport.<init>(java.lang.String, java.lang.String, java.lang.String, java.util.List, java.lang.Bookean, java.lang.Integer)
J'ai aussi remarqué que l'erreur intervenais lors de la construction du constructeur (ici ligne 11)
merci
larnin_