Ca ne marche malheureusement pas
Bonsoir,
Je tire mes citations de l'interface Eclipse.
L'utilisation de Class telle qu'écrite dans ton message :
Code:
public HashMap<String, Class> types = new HashMap<String, Class>();
provoque un warning :
Citation:
Class is a raw type. References to generic type Class<T> should be parameterized
Et lors de l'instanciation :
Code:
1 2
|
types.put("machin", Integer.class); |
Citation:
Multiple markers at this line
- Syntax error on token(s), misplaced construct(s)
- Syntax error on token ""machin"", invalid
FormalParameterList
- Syntax error on tokens, FormalParameter expected
instead
Et l'usage d'un joker
Code:
public HashMap<String, Class<?>> types = new HashMap<String, Class<?>>()
ne change rien pour ce qui est de l'instanciation même si cela supprime le warning sus-cité...
Je vais continuer d'y réfléchir, mais si tu as une autre idée, je suis preneur.
A bientôt
Ce que j'ai pu comprendre...
Tout d'abord, Java ne pas apprécier pas que l'on utilise une String pour désigner un type dans une classe générique : il attend un identifiant. Donc en stockant une chaine avec le nom de la classe dans une map, ça ne marchera jamais...
Ensuite, mon erreur venait surtout de ce que dans mes définitions de classes abstraites, je voulais user de la chaine stockée dans la map afin de créer un Class<T> pour ensuite passer par Class<T>.newInstance(), et pour cela il faut que la classe T en question possède un constructeur sans argument : ce n'est pas le cas d'Integer.
Voilà pour conclure sur ce sujet.
Merci d'avoir essayé de m'aider