当我浏览Object类时,我发现只有hashCode()方法的声明。实施部分在哪里?如果没有实现,hashCode()方法如何返回结果?
答案 0 :(得分:10)
它是在本机代码中实现的。至于实现,它有点棘手 - 你可以改变默认实现。如果查看“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()
函数的源代码和注释。
答案 1 :(得分:7)
native
关键字表示它已在本机代码(JVM)中实现。
答案 2 :(得分:5)
如果您看到hashcode
的{{3}}
public native int hashCode();
声明中的 native
表示它是在jvm代码中本机实现的。
答案 3 :(得分:0)
实施部分在哪里?
它已经由框架实现。 Please see the documentation.
如果没有实现,hashCode()方法如何返回结果?
但是,如果您创建自定义类型,则您负责生成int
值,该值可以很好地表示对象的当前状态。 Here is a good example of that.