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 :
Voici le protorype appelé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); }
Le programme compile normalement, mais je reçois une erreur lors de l'instanciation de la class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public BookBase(String name, String author, String title, List<String> pages, boolean unique, int mana) { // du code .... }
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_
Partager