压倒等于不起作用

Fra*_*sco 2 java overriding equals

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

@Override
public boolean equals(Object o){
    StudentProxy s = (StudentProxy)o;
    return Matricola == s.Matricola && Name == s.Name && Surname == s.Surname;
}
Run Code Online (Sandbox Code Playgroud)

这是我的断言失败的地方:

@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 ! ! ! 
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过assertTrue:

assertTrue(ret.equals(s));
Run Code Online (Sandbox Code Playgroud)

但我得到了AssertionError; 我认为这是由于调用最抽象的equals这一事实引起的,并且由于这两个对象不是同一个对象,因此它给我提供了AssertionError消息.

有任何想法吗???:(

PS:他们应该是等于我已经用不同的方式检查了很多次,所以这不是问题,我已经多次测试这段代码,发现问题是equals不会覆盖;)

dev*_*obf 7

没有更多的信息很难说,但看起来你的Matricola,NameSurname字段是Objects,可能是Strings.在这种情况下,你应该像这样比较它们:

return Matricola.equals(s.Matricola) && Name.equals(s.Name) && Surname.equals(s.Surname);
Run Code Online (Sandbox Code Playgroud)

否则你正在比较参考.

  • 有趣的是你想​​覆盖一个 `equals()` 方法,然后使用 `==`。 (2认同)