我有两个来自数据库的对象(在数据库中它是同一个对象),但它们有不同的哈希值:
GroupType@6040
GroupType@6041
我得到了这个输出:
sys.path
为什么?技术堆栈:Spring,JavaFX,Hibernate。
我有另一个使用Spring和Hibernate的项目。两个项目中的配置文件相同。 Hibernate版本也是一样的。但是在另一个项目中,这会生成相同的哈希码。
答案 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文档的引文。