我正在编写的equals方法无法按预期工作

时间:2019-06-23 06:13:06

标签: java

因此,我正在编写一个equals方法来比较同一类的不同对象中字符串的相等性。比较两个对象时,我的方法的第一个版本不起作用,有人可以解释为什么

//这是第一版未通过的测试

@Test
public void testEqualsTrue2() {
    Fragment f = new Fragment(new String("GCAT"));
    Fragment g = new Fragment(new String("GCAT"));
    assertTrue(f.equals(g));
    assertTrue(g.equals(f));
}

//这些是方法中使用的代码的相关部分;

    public class Fragment {
      String nucleotideSequence;

    @Override
    public String toString() {
        return nucleotideSequence;
    }

}

//这是该代码的版本之一,不适用于上述测试

@Override
public boolean equals(Object o) {
    if(nucleotideSequence == o.toString()) {
        return true;
    }
    return false;
}

//这是可行的版本

@Override
    public boolean equals(Object o) {
        boolean k = true;
        if(o instanceof Fragment == false){
            k = false;
        }
        else{
            for(int i = 0; i<frag.length(); i++){
                if(frag.charAt(i) == o.toString().charAt(i)){
                    k = true;
                }
                else
                    k = false;
            }
        }
        return k;
    }

0 个答案:

没有答案