В 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
аннотация может помочь тонне с глупыми ошибками.
Использование это каждый раз, когда Вы думаете, что переопределяете метод суперкласса или интерфейса. Тот путь, если Вы делаете это неправильно, Вы получите ошибку компиляции.
Немного вне темы к Вашему вопросу, но это, вероятно, стоит упомянуть так или иначе:
Commons Lang имеет некоторые превосходные методы, которые можно использовать в переопределении, равняется и хэш-код. Выезд EqualsBuilder.reflectionEquals (...) и HashCodeBuilder.reflectionHashCode (...) . Сохраненный меня много головной боли в прошлом - хотя, конечно, если Вы просто хотите сделать, "равняется" на идентификаторе, он не может соответствовать Вашим обстоятельствам.
я также соглашаюсь, что необходимо использовать @Override
аннотация каждый раз, когда Вы являетесь переопределяющими, равняется (или любой другой метод).