2013-04-11 5 views
2

Вот моя проблема: , когда я пытаюсь переопределить метод 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;)

+4

Вы просматривали содержимое возвращаемого объекта? Кроме того, поля кажутся объектами, вы должны сравнивать их с 'equals()', а не '=='. –

+0

Вы уверены, что ваш код перекомпилирован после добавления вашего эквивалента? – danieln

+0

Я предполагаю, что имя и фамилия являются строками, поэтому вам нужно использовать .equals вместо == на них, как предлагает @AndrewLogvinov. Кроме того, вы реализовали равных по Matricola? –

ответ

7

трудно сказать без дополнительной информации, но это, кажется, что ваши Matricola, Name и Surname поля Object s, возможно, String сек. В этом случае вы должны сравнить их следующим образом:

return Matricola.equals(s.Matricola) && Name.equals(s.Name) && Surname.equals(s.Surname); 

В противном случае вы сравниваете ссылки.

+0

Я очень люблю тебя;) Я очень люблю с Java – Francesco

+1

Забавно, что вы хотите переопределить метод 'equals()', но затем используйте '=='. –

+0

его более глупо, чем смешно @SotiriosDelimanolis и я прекрасно это знаю! :П – Francesco

0

для сравнения строки, вы должны использовать равно

Смежные вопросы