[Débutant] Surcharge d'une méthode
Bonjour à tous,
je débute dans le Java, j'ai un exercice tout simple.
J'ai une classe Point, je fais un ArrayList de Point.
J'appele la méthode indexof, je sais que cette méthode fait appel à equals, mais je voudrais qu'elle compare le contenu des points et non les référence, j'ai donc surchargé equals(), dans ma classe Point :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class Point {
private int x;
private int y;
...
public boolean isSameAs(Point p){
return ((this.x==p.x)&&(this.y==p.y));
}
@Override
public boolean equals(Object p){
System.out.println("Compare bien le contenu maintenant !");
return this.isSameAs((Point)p);
} |
L'appel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Point p=new Point(1,2);
Point p2=p;
Point p3=new Point(1,2);
ArrayList<Point> list = new ArrayList<Point>();
list.add(p);
list.add(p2);
list.add(p3);
System.out.println("Position de p2 dans list : "+list.indexOf(p2));
System.out.println("Position de p3 dans list : "+list.indexOf(p3));
System.out.println("Object.equals() est appelé par indexOf()"); |
Or je n'obtient pas la bonne position de mes objets :
Code:
1 2 3 4 5
| Compare bien le contenu maintenant !
Position de p2 dans list : 0
Compare bien le contenu maintenant !
Position de p3 dans list : 0
Object.equals() est appelé par indexOf() |
Il me manque quelque chose apparement mais quoi ? :(