Переопределенный метод равенства не вызываетсяJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Переопределенный метод равенства не вызывается

Сообщение Anonymous »

У меня есть класс драйвера:

Код: Выделить всё

public class Driver {

String name;
String surname;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSurname() {
return surname;
}

public void setSurname(String surname) {
this.surname = surname;
}

@Override
public final boolean equals(Object o) {
boolean equals = true;
equals &= o.getClass() == this.getClass();
equals &= ((Driver)o).getName().equals(this.getName());
equals &= ((Driver)o).getSurname().equals(this.getSurname());
return equals;
}

@Override
public final int hashCode() {
int result = 0;
result = result+(name!=null ? name.hashCode():0);
result = result+(surname!=null ? surname.hashCode():0);
return result;
}

}
В основном методе у меня есть следующий вызов:

Код: Выделить всё

//I get the map via the parameters: Map> map
//There is a entry, with the right driver
if (map.get(driver) == null) {

.
.
.
}
Я не знаю, почему я не могу получить правильную запись с карты. Объекты драйвера создаются в разных местах. Но имя и фамилия идентичны. Поэтому я перезаписал метод равенства в классе Driver.
Запись с ключом не найдена, хотя он там 100%


Подробнее здесь: https://stackoverflow.com/questions/785 ... not-called
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»