首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

重写hashCode使两个不同的对象的返回值相同,但equals还是相等?该怎么解决

2012-03-26 
重写hashCode使两个不同的对象的返回值相同,但equals还是相等?Java codeclass A{@Overridepublic int hash

重写hashCode使两个不同的对象的返回值相同,但equals还是相等?

Java code
class A{        @Override    public int hashCode() {        // TODO Auto-generated method stub        return 1;    }        public static void main(String[] args) {        System.out.println(new A().equals(new B()));//false 这里为什么还是false??        System.out.println(new A().hashCode()==new B().hashCode());//true    }    }class B{        @Override    public int hashCode() {        // TODO Auto-generated method stub        return 1;    }}


[解决办法]
重写hashCode,不跟equals相同。

你需要重载equals方法,才可以呢。
[解决办法]
也要重写equals
[解决办法]
Java code
    public boolean equals(Object anObject) {    if (this == anObject) {        return true;    }    if (anObject instanceof String) { // 判断目标对象是否为String        String anotherString = (String)anObject;        int n = count;        if (n == anotherString.count) {        char v1[] = value;        char v2[] = anotherString.value;        int i = offset;        int j = anotherString.offset;        while (n-- != 0) {            if (v1[i++] != v2[j++])            return false;        }        return true;        }    }    return false;    } 

热点排行