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 : 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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !