Переопределить метод равных в Java - PullRequest
0 голосов
/ 07 октября 2018

Давайте рассмотрим следующий простой класс.

class Point {
private float x;
private float y;

public Point(float x, float y){
    this.x=x;
    this.y=y;
}

public float getX(){return this.x;}
public float getY(){return this.y;}
public void setX(float x){this.x=x;}
public void setY(float y){this.y=y;}

@Override
public String toString(){
    return ("x = "+this.x+", y = "+this.y+";");
}
@Override
public Point clone(){
    return new Point(this.x,this.y);
}
@Override
public boolean equals(Object object){
    if (object != null && object.getClass()==Point.class){
        return object.getX()==this.x && object.getY()==this.y;
    }
    else{
        return false;
    }
}

Проблема заключается в переписывании метода equals: я использую общий класс Object в качестве атрибута, чтобы сделать его более гибким, но netbeans выводит ошибку на обратной строке: «У объекта нет метода getX», что вполне логично.

Но проблема все еще здесь, как я могу это исправить?

Заранее спасибо :))

1 Ответ

0 голосов
/ 07 октября 2018

Это довольно просто, но вам нужно разыграть object:

@Override
public boolean equals(Object object){
    if (object != null && object.getClass()==Point.class){
        Point p = (Point)object;
        return p.getX()==this.x && p.getY()==this.y;
    }
    else{
        return false;
    }
}

Это также имеет отношение: Метод приведения равных

...