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 : 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());
}
Voici le protorype appelé :

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 ....
}
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_