Salut à tous,
Dans le cadre d'un projet assez complexe, je dois utiliser une Map avec comme clé une classe et comme valeur une liste d'objet d'instance de cette même classe.
J'ai simplifié le code au maximum et j'arrive au code suivant:
Ca ne compile pas
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 public class Test { private class BaseObject { } private class MyMap<T extends BaseObject> extends HashMap<Class<T>, List<T>> { private static final long serialVersionUID = 1L; } private MyMap<? extends BaseObject> map; public <T extends BaseObject> void put(Class<T> clazz, List<T> l) { map.put(clazz, l); } public <T extends BaseObject> List<T> get(Class<T> clazz) { return map.get(clazz); } }
Bien-sûre je ne peux pas rendre la classe Test generic parce que je ne connais pas à l'avance le nombre de clé possible.
Pour m'en sortir j'utilise le code suivant:
Mais je trouve ça dommage de passer par un transtypage, et je suis à peu près sûre qu'il y a une solution plus propre, vous avez pas une idée ?
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 public class Test2 { private class BaseObject { } private Map<Class<? extends BaseObject>, List<? extends BaseObject>> map; public <T extends BaseObject> void put(Class<T> clazz, List<T> l) { map.put(clazz, l); } public <T extends BaseObject> List<T> get(Class<T> clazz) { return (List<T>) map.get(clazz); } }
Merci
Partager