Activity Object.hashCode() 在不同的实例上是一样的

Activity Object.hashCode() is the same on different instances

完全不同实例的可预测相同 Object.hashCode()

如果我理解正确,那么对象的每个新实例的 Object.hashCode() 应该是新的并且几乎总是与以前的不同,除了碰撞。 但我发现了一个有趣的模式。 如果我使用 Android Studio,创建一个 Activity 并在 onCreateonStartonResumeonPause、[=18 中调用哈希码=]、onRestartonDestroy 方法和 运行 模拟器中的应用程序,然后在以下条件下我在日志中得到相同的哈希码:

哈希码方法的唯一要求是,如果两个对象相等,则它们必须具有相同的哈希码。不保证两个不同的对象应该具有不同的哈希码。如果 class 没有覆盖 hashcode 方法,那么行为是依赖于实现的。一个典型的行为是 return 内部对象引用。如果 activity 是第一个到 运行 在你的模拟器中,那么如果它总是得到相同的对象引用(这可能是一个简单的计数器)就不是那么奇怪了。当然,如果您在同一个模拟器会话中关闭并重新 运行 应用程序,您将获得一个新的对象引用和一个新的哈希值。滑动会终止 vm 进程,因此会启动一个新的 vm 并重置对象引用计数器。

https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()