java - 如何识别类的实例的唯一性

标签 java android

我有一个在 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/

相关文章:

java - 以后如何使用 KeyGenerator 生成的 key ?

java - 如何发现 List<Integer> 中缺少的渐进算术数在 Java 8 中是什么?

java - 按后退按钮时强制关闭

java - String中是否有任何函数可以帮助删除字符串中的所有空格?

android - 如何 Intent 相同的 Activity 而不是第二个 Activity

java - 测试时为什么要创建/删除测试数据库?

android - getStringExtra() 返回 NullPointerException

android - 在android中将多个 Intent 从一个 Activity 发送到另一个 Activity

java - NoClassDefFoundError Proguard Activity

java - TextView 未出现在 onDraw 对象中