Как вызвать оригинальный метод внутри переопределенного метода

1
class Object{

    String x;
    int y;

    Object (String a, int b){
        this.x = a;
        this.y = b;

    @Override
    boolean equals(Object obj){

         return (this.x.equals(obj.x)) && this.y == obj.y);
    }
}

Здесь я пытаюсь написать метод, который переопределяет equals(), чтобы одновременно приравнивать два значения, строку и целое число. Чтобы проверить равенство строк, я использую оригинальный метод equals(), который я переопределяю.

Могу ли я сделать это без ошибок? Или я не могу использовать исходный метод equals() внутри метода, переопределяющего его? Есть ли лучший способ достичь этого?

Я не совсем в состоянии найти ответы на этот вопрос в Интернете, но это может быть результатом незнания технической формулировки ситуации, подобной этой.

спасибо

  • 0
    super.equals() Не так ли?
  • 2
    Вы переопределяете другой из ваших классов, который содержит метод equals(String, int) ? Если нет, то @Override поймает это. Обычная подпись для equals equals(Object) .
Показать ещё 2 комментария
Теги:
override

2 ответа

2
Лучший ответ

Я думаю, проблема в том, что вы неправильно переопределяете метод Object.equals(). Если вы пытаетесь проверить, что и String, и int равны для того, чтобы ваш объект был равен, это похоже на то, что вы хотите, чтобы новый объект представлял все, что представляет собой String и int:

class MyObj {
    private String str;
    private int num;
    ...
}

(с соответствующими методами получения и сеттера)

Затем вы можете переопределить MyObj.equals() следующим образом:

@Override
boolean equals(MyObj that){
    /* First check for null and all that stuff */
    ...
    return this.str.equals(that.getStr()) && this.num == that.getNum();
}
1

Вызов:

super.whatevername();

Или в этом случае:

super.equals(someObject);

Это вызовет метод суперкласса

Кстати, исходный метод равенства равен

public boolean equals(Object obj)

Кстати, весь ваш блок возврата может быть заменен на:

return (this.x.equals(obj.x)) && this.y == obj.y);

То, как вы это делали, неэффективно и заставляет меня съеживаться:/

  • 0
    Хаха, это намного лучше, спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню