我有一个像这样的界面 -
public interface myInterface {
String getMyString();
}
这样的两个实现 -
class test implements myInterface {
@Override
public String getMyString() {
return "1,2";
}
}
class test2 implements myInterface {
@Override
public String getMyString() {
return "1,2";
}
}
当我创建这两个clasess的新instnaces并执行.hashCode时,我得到了hashCode的不同值。为什么这样?
test test = new test();
test2 test2 = new test2();
System.out.println(test.hashCode());
System.out.println(test2.hashCode());
答案 0 :(得分:1)
如果有三条评论没有向您提示您的问题,那么您有不同的类,您没有覆盖hashCode
方法,以使用您的界面方法实际使您的类具有相同的哈希码。
答案 1 :(得分:1)
假设它们是两个不同的对象,如果要让它们相同,则需要覆盖哈希码方法。
答案 2 :(得分:1)
引自Object#hashCode()
尽可能合理,Object类定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但JavaTM编程语言不需要此实现技术。)
除非您已覆盖hashCode()
,否则上述内容将成为默认行为。