gpt4 book ai didi

java - 覆盖等于不工作

转载 作者:行者123 更新时间:2023-12-01 22:20:01 26 4
gpt4 key购买 nike

这是我的问题:当我尝试重写“我的类”的 equals 方法时,它根本不起作用,调用的函数是最抽象的函数,而不是“我的类”的 equals 方法!这是我的程序的一些代码:这是“我的类(class)”等于代码:

@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。

有什么想法吗??? :(

P.S.:它们应该是相等的,我已经用不同的方式检查了很多次,所以这不是问题,我已经多次测试了这段代码,发现问题是 equals 没有覆盖;)

最佳答案

如果没有更多信息,很难判断,但您的 MatricolaNameSurname 字段似乎是 Object code>,可能是 String。在这种情况下,您应该像这样比较它们:

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

否则你就是在比较引用文献。

关于java - 覆盖等于不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com