可以实现hashCode 的值不相等
但是,这样没有意义
equals(), hashCode(), toString() 这些都是相互独立的方法而已,这些方法之间的并不存在强制的约束关系,要怎么实现就随便自己怎么做了
public class Test
{
int value;
public Test(int value)
{
this.value = value;
}
/**
* 覆写equals 根据value判断
* @param o
* @return
*/
public boolean equals(Object o)
{
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
final Test test = (Test) o;
if (value != test.value) {
return false;
}
return true;
}
public static void main(String[] args)
{
Test test1 = new Test(1);
Test test2 = new Test(1);
System.out.println("test1 hashcode is:" + test1.hashCode());
System.out.println("test2 hashcode is:" +test2.hashCode());
System.out.println("test1 equals test2 is:" + test1.equals(test2));
}
}
此代码在我机器上执行的结果为:
test1 hashcode is:24287316
test2 hashcode is:7254922
test1 equals test2 is:true
|