Bonjour à tous,
je bute sur un problème bien étrange. Voici ce qui se passe :
j'ai construis une classe me permettant d'instancier des objets "PieceJointe".
Un objet PieceJointe possède les propriété suivantes:
- un nom : String
- un type : String
- un document : byte[]
Jusque là tout va bien. J'arrive à instancier des objets "PieceJointe" sans soucis, il possède bien un nom, un type, et les documents (quel qu'il soit : doc,...) sont bien pris en compte. Je peux récupérer, à tout moment les valeurs des ces propriétés par des getters et cela fonctionne.
Par exemple, je peux les afficher en console et pour chacune d'elle j'obtiens une valeur (que ce soit une chaine de caractères pour les deux premières priorités ou un chiffre hexa pour la dernière)
Par contre, lorsque j'essaye de comparer deux objet de type PieceJointe pourtant identiques, j'obtiens toujours false .
Je procède de la manière suivante :
J'ai donc creusé plus loin de manière à cibler laquelle des trois propriétés des objets PieceJointe posait problème : il s'agit de la propriété document de type byte[].
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 Je possède deux objets PieceJointe, alimenter avec les mêmes attributs : pj1 et pj2. J'ai réécris la méthode equals pour le type pieceJointe: public boolean equals(Object o){ try{ PieceJointe pj = (PieceJointe)o return this.nom.equals(pj.getNom()) && this.type.equals(pj.getType()) && Arrays.equals(this.document,pj.getDocument()); }catch(Exception e){ return false; } } Lorsque j'utilise cette méthode et que j'affiche le résultat en console, j'obtiens false : System.out.println(pj1.equals(pj2)); => donne false
En réalité, si je place la ligne de code suivante dans ma méthode equals (avant le return):
J'obtiens la valeur null. Pourtant, si avant d'appeler ma méthode equals, j'affiche en console la valeur de la propriété document de pj2 et de pj1, j'obtiens bien une valeur identique...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.out.println(pj.getDocument);
Il semblerait donc que le fait caster l'objet passer en paramètre à la méthode equals depuis le type Object vers le type PieceJointe pose problème. Plus précisément, il semble qu'il ne soit pas possible de caster un byte[].
Voilà, je suis un peu perdu, qu'en pensez vous ?
Bien à vous,
Samuel.
Partager