Bonjour,
J'ai un cas un petit peu complexe de Vector imbriqué dans un hashMap, donc voici pour commencer un peu de code:
La hashTable:
La classe "vecteur" GroupeMaClasse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part final java.util.Hashtable<String,GroupeMaClasse> MaListeDeMaClasse = new java.util.Hashtable<String,GroupeMaClasse>();
Et la classe Classe:
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 private class GroupeMaClasse { private Vector<MaClasse> groupeClasse; public GroupeMaClasse() { groupeClasse = new Vector<MaClasse>(); } public void add(MaClasse addedClasse) { if(addedClasse != null) { groupeMaClasse.add(addedClasse); } } public boolean contains(MaClasse submittedClasse) { return groupeMaClasse.contains(submittedClasse); } }
A un moment dans mon code je veux savoir si à une clef "CLEF" (String), le vecteur de groupeMaClasse contient une instance de MaClasse équivalente à une référence, je fais donc:
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 private static class MaClasse{ //[..] Divers attributs... //[..] Divers accesseurs //[..] Constructeur public boolean equals(MaClasse comparedClasse) { if(comparaison attribut par attribut) { return true; } else { return false; } } }
MaListeDeMaClasse.get("CLEF").contains(MaReference);
Résultat: si je passe en paramètre l'instance exacte, la réponse est correcte (true), si je passe une instance équivalente (tous les champs de MaClasse égaux), la réponse est false, ce qui me fait penser que "contains()" de Vector utilise la fonction "equals()" d'Object et non de MaClasse, telle que définie dans le corps de la classe...
Comment "forcer" contains à utiliser "mon" equals?
Merci d'avance,
LDPDC
Partager