[Généricité] Map, lien clé/valeur
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 :
Code:
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);
}
} |
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:
1 2
|
private <E extends G> Map<A<E>, B<E>> map; |
sans que tout ce qui est dans la map soit de même type. Est-ce possible ?