Je veux étendre HashMap
pour ajouter la méthode putIfGreaterThan
qui récupère essentiellement la valeur pour une clé donnée et si la nouvelle valeur est supérieure à l'ancienne valeur, nous mettons à jour l'ancienne valeur avec la nouvelle valeur. Comme ceci:
public void putIfGreaterThan(String key, Double value)
{
if (containsKey(key) != true) {
put(key, value);
} else {
if (get(key) < value) {
System.out.println("Ajout de la nouvelle valeur: " + value + " à la carte");
put(key, value);
} else {
System.out.println("N'a pas ajouté de valeur: " + value + " à la carte");
}
}
}
Le programme ci-dessus fonctionne bien - cependant je voudrais ajouter cette méthode à la fois HashMap
et LinkedHashMap
. En d'autres termes, si quelqu'un instancie:
HashMap hashmap = new HashMap();
Ils devraient pouvoir accéder à la méthode:
hashmap.putIfGreaterThan();
Et si quelqu'un instancie:
LinkedHashMap linkedhashmap = new LinkedHashMap();
Ils devraient pouvoir accéder à la méthode:
linkedhashmap.putIfGreaterThan();
Si je crée une nouvelle classe comme suit:
MyHashMap étend HashMap
et ajoute la méthode précédemment mentionnée - je n'étends que HashMap
pas LinkedHashMap
. Cela ne me permettrait pas d'accéder à la méthode si j'instancie un LinkedHashMap
.
Je pensais modifier le code source dans la classe HashMap d'origine (en ajoutant la méthode putIfGreaterThan
) cependant je ne suis pas en mesure de modifier le code source à moins de décompiler toute la classe (et quand j'essaie de le faire j'obtiens plein d'autres erreurs donc j'ai pensé que ce serait plus facile juste d'étendre la classe HashMap
mais en faisant cela je ne peux pas utiliser la méthode putIfGreaterThan
sur à la fois HashMap
et LinkedHashMap
).
De plus, si j'avais ajouté la méthode à la classe d'origine, on pourrait appeler cette méthode sur n'importe quel HashMap
(même si la carte contient deux chaînes) mais la méthode est applicable uniquement à un HashMap contenant String et Double ou String et Int. Par conséquent, je pense qu'il est plus logique d'étendre la classe d'origine et de personnaliser la classe actuelle avec des méthodes liées à un HashMap
de String et Double.
Des suggestions?
Merci