Java的。具有不同散列的相同对象

时间:2016-10-12 13:15:19

标签: java

我有两个来自数据库的对象(在数据库中它是同一个对象),但它们有不同的哈希值:

GroupType@6040
GroupType@6041

我得到了这个输出:

sys.path

为什么?技术堆栈:Spring,JavaFX,Hibernate。

我有另一个使用Spring和Hibernate的项目。两个项目中的配置文件相同。 Hibernate版本也是一样的。但是在另一个项目中,这会生成相同的哈希码。

2 个答案:

答案 0 :(得分:4)

您打印的内容是对象引用。如果您通过调用new来创建每个引用,它们确实是不同的。

您需要根据“Effective Java”覆盖equals,hashCode和toString以获得所需的行为。

答案 1 :(得分:0)

System.out.println(groupType)通常在java.lang.Object上调用toString()方法,并打印出来:

  

getClass()。getName()+' @' + Integer.toHexString(hashCode())

现在,hashCode()可能会有点误导,因为如果它没有被覆盖那么......

  

类Object定义的hashCode方法确实为不同的对象返回不同的整数。

来自java.lang.Object文档的引文。