簡體   English   中英

壓倒等於不起作用

[英]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不會覆蓋;)

沒有更多信息很難說,但是您的MatricolaNameSurname字段似乎是Object ,可能是String 在這種情況下,你應該像這樣比較它們:

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

否則你正在比較參考。

比較字符串,您應該使用equals

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM