在调试时,Eclipse中的对象值附近显示了一个对象ID。
例如:28332是会话对象的ID。另一个示例:waiting for: (id=101)
显示在“调试”面板中。这些ID既不是哈希码也不是System.identityHashCode
。
有人知道 - 如何获取对象的this
id?
答案 0 :(得分:27)
我认为它们内部有一个IdentityHashMap<Object, Integer>
,为每个对象分配一个唯一的(但无意义的)整数。这应该是Eclipse调试器的内部(不是对象具有的特殊id)。你在问这个怎么样?
编辑:我会设置这样的断点(注意我不熟悉Eclipse):
System.identityHashCode(object)
。 System.identityHashCode(object) == <whatever number you saw at the previous step>
创建一个断点。停止错误的目标是非常罕见的。或者,如果您感兴趣的对象具有您可以使用的适当toString()
表示,您也可以尝试使用System.identityHashCode(object)
而不是id
。在所有情况下,您不必依赖Eclipse的内部对象ID,而是捕获可以从对象本身派生的{{1}}(或几乎)。