我有一个在 Android 可穿戴设备上运行的类,它应该只有一个实例,但是我偶尔会观察到一些意想不到的行为,这让我推测在某些情况下是否可能有两个实例正在创建中。
如果我在 C 或 C++ 世界中,我只需将日志记录语句添加到类的方法中以记录对象自身的内存地址,这样就可以直接检查是否真的有两个对象或只有一个对象。
能够识别特定对象实例的 Java/Android 等效方法是什么?
最佳答案
toString()
的默认实现应该可以解决问题。根据java docs ,它返回 getClass().getName() + '@' + Integer.toHexString(hashCode())
,并且 hashCode()
应该是实例唯一的,除非以它不是的方式被覆盖。根据java docs ,似乎 hashCode()
的默认实现使用对象的内存地址,提供类似于您在 C 或 C++ 中提到的功能。
如果 hashCode()
已被覆盖,您可以使用 System.identityHashCode(Object)
返回唯一的哈希码,无论 hashCode()
已被覆盖。更多信息 here .
关于java - 如何识别类的实例的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28775412/