J'ai une question concernant la généricité et plus particulièrement sur les Maps. J'aurai voulu lier les généricités de la clé et de la valeur d'une Map. Pour mieux comprendre, un bout de code :
Ce que j'aurai voulu c'est que b1 soit de type B<G1> et b2 de type B<G2> sans avoir à caster. Pour cela il faudrait quelque chose du genre :
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 public class Test { class G {} class G1 extends G {} class G2 extends G {} class A<T extends G> {} class B<T extends G> {} private Map<A<? extends G>, B<? extends G>> map; public Test() { map = new HashMap<A<? extends G>, B<? extends G>>(); A<G1> a1 = new A<G1>(); A<G2> a2 = new A<G2>(); map.put(a1, new B<G1>()); map.put(a2, new B<G2>()); B<? extends G> b1 = map.get(a1); B<? extends G> b2 = map.get(a2); } }
sans que tout ce qui est dans la map soit de même type. Est-ce possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private <E extends G> Map<A<E>, B<E>> map;
Partager