【发布时间】:2013-01-25 12:23:27
【问题描述】:
当我浏览 Object 类时,我发现只有 hashCode() 方法的声明。执行部分在哪里?如果没有实现 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()函数的源代码和cmets。
【讨论】:
native 关键字表示它已在本机代码(JVM)中实现。
【讨论】:
【讨论】:
实现部分在哪里?
框架已经实现了。 Please see the documentation.
如果没有实现,hashCode() 方法如何返回结果?
但是,如果您创建自定义类型,则您有责任生成 int 值,该值很好地表示对象当前状态。 Here is a good example of that.
【讨论】: