Вот моя проблема: , когда я пытаюсь переопределить метод equals из «моего класса», он просто не работает, вызываемая функция является самой абстрактной, а не метод «мой класс» равен ! Вот код моей программы: это «мой класс» равен код:Переопределение равно не работает
@Override
public boolean equals(Object o){
StudentProxy s = (StudentProxy)o;
return Matricola == s.Matricola && Name == s.Name && Surname == s.Surname;
}
и здесь, где мое утверждение не в состоянии:
@Test
public void storeStudentTest() throws Exception{
StudenteProxy s = new StudenteProxy(100, "Gianni", "Rosso", 27.2, 132);
DB.storeStudent(s);
StudentProxy ret = (StudentProxy)DB.retrieveStudentData(s.getMatricola());
DB.deleteStudent(s);
assertEquals(ret, s); // HERE ! ! !
}
Я также попытался с assertTrue:
assertTrue(ret.equals(s));
но я получаю AssertionError; Я предполагаю, что это вызвано тем, что вызываются самые абстрактные равенства, и поскольку эти два объекта не являются одними и теми же объектами, он дает мне сообщение AssertionError.
Любые идеи ??? :(
PS: Они должны быть равен Я много раз проверял по-разному, так что это не проблема, я проверил этот код много раз, и обнаружил, что проблема заключается в том, что равняется не Override;)
Вы просматривали содержимое возвращаемого объекта? Кроме того, поля кажутся объектами, вы должны сравнивать их с 'equals()', а не '=='. –
Вы уверены, что ваш код перекомпилирован после добавления вашего эквивалента? – danieln
Я предполагаю, что имя и фамилия являются строками, поэтому вам нужно использовать .equals вместо == на них, как предлагает @AndrewLogvinov. Кроме того, вы реализовали равных по Matricola? –