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