Переопределение Java равняется () методу - не работа?

150
задан RobAu 27 August 2018 в 11:38
поделиться

2 ответа

В Java equals() метод, который наследован от Object:

public boolean equals(Object other);

, Другими словами, параметр должен иметь тип Object.

ArrayList использование, корректное равняется методу, где Вы всегда называли тот, который правильно не переопределял Object, равняется.

Не переопределение метода правильно может вызвать проблемы.

я переопределяю, равняется следующему каждый раз:

@Override
public boolean equals(Object other){
    if (other == null) return false;
    if (other == this) return true;
    if (!(other instanceof MyClass))return false;
    MyClass otherMyClass = (MyClass)other;
    ...test other properties here...
}

использование @Override аннотация может помочь тонне с глупыми ошибками.

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

326
ответ дан 8 revs, 3 users 92% 23 November 2019 в 22:18
поделиться

Немного вне темы к Вашему вопросу, но это, вероятно, стоит упомянуть так или иначе:

Commons Lang имеет некоторые превосходные методы, которые можно использовать в переопределении, равняется и хэш-код. Выезд EqualsBuilder.reflectionEquals (...) и HashCodeBuilder.reflectionHashCode (...) . Сохраненный меня много головной боли в прошлом - хотя, конечно, если Вы просто хотите сделать, "равняется" на идентификаторе, он не может соответствовать Вашим обстоятельствам.

я также соглашаюсь, что необходимо использовать @Override аннотация каждый раз, когда Вы являетесь переопределяющими, равняется (или любой другой метод).

11
ответ дан 23 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: