可能重复:
java对象中hashCode的实现是什么?
当我浏览 Object 类时,我发现只有 hashCode() 方法的声明。执行部分在哪里?如果没有实现 hashCode() 方法如何返回结果?
可能重复:
java对象中hashCode的实现是什么?
当我浏览 Object 类时,我发现只有 hashCode() 方法的声明。执行部分在哪里?如果没有实现 hashCode() 方法如何返回结果?
它是在本机代码中实现的。至于实现,它有点棘手 - 您可以更改默认实现。如果您查看“Open JDK”源代码,您将看到以下选项:
-XX:hashCode=n(从 0 到 5)。
您可以在这里找到详细的实现:http: //hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/vm/runtime/synchronizer.cpp
考虑源代码和static inline intptr_t get_next_hash()
函数注释。
native
关键字表示它已在本机代码(JVM)中实现。
执行部分在哪里?
它已经由框架实现。请参阅文档。
如果没有实现 hashCode() 方法如何返回结果?
但是,如果您创建自定义类型,则您负责生成一个int
可以很好地表示对象当前状态的值。这是一个很好的例子。