Template - méthodes génériques et spécialisées
Bonjour,
Je souhaite utiliser une classe 'Cost' contenant une HashMap<Object, Integer>.
Cette HashMap pourra être de type <String, Integer> ou <MultiKey, Integer>.
Voici une version simplifiée de la classe correspondante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.util.HashMap;
import java.util.Iterator;
public class Cost<Item> {
public HashMap<Item, Integer> costs;
public Cost(){
costs = new HashMap<Item, Integer>();
}
public int get(Object o){
if(costs.get(o) != null)
return costs.get(o);
else
return 1;
}
public void add(Item o, int val){
costs.put(o, val);
}
} |
Dans le cas où la HashMap est de type <MultiKey, Integer>, je souhaiterais spécialiser la méthode add de la manière suivante :
Code:
1 2 3 4
| public void add(String s1, String s2, int val){
costs.put(new MultiKey(s1, s2), val);
costs.put(new MultiKey(s2, s1), val);
} |
Ceci me donne une erreur puisque la fonction put est défini pour des arguments de type (Item, Integer) et non (MultiKey, Integer).
Comment puis-je spécifier que cette méthode add est à utiliser dans le cas où Item est de type MultiKey ?
Merci d'avance !