[英]Overriding equals not working
這是我的問題:當我嘗試覆蓋“my class”的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; 我認為這是由於調用最抽象的equals這一事實引起的,並且由於這兩個對象不是同一個對象,因此它給我提供了AssertionError消息。
有任何想法嗎??? :(
PS:他們應該是等於我已經用不同的方式檢查了很多次,所以這不是問題,我已經多次測試這段代碼,發現問題是equals不會覆蓋;)
沒有更多信息很難說,但是您的Matricola
, Name
和Surname
字段似乎是Object
,可能是String
。 在這種情況下,你應該像這樣比較它們:
return Matricola.equals(s.Matricola) && Name.equals(s.Name) && Surname.equals(s.Surname);
否則你正在比較參考。
比較字符串,您應該使用equals
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.