【问题标题】:How to get instance number如何获取实例编号
【发布时间】:2010-11-25 19:59:29
【问题描述】:

有没有办法获取实例编号或id,我的意思是你可以在eclipse Debug>Variables窗口中看到值列中类名之后的内容。

谢谢

【问题讨论】:

  • 我相信数字只是对象的内存地址。 hashCode 可能会返回这个数字,或者它的一个修改版本。
  • Java object ID in jvm 的可能重复项
  • 我不是指内存地址,我是指实例的数量而不是对象。有可能是eclipse生成的数字。

标签: java


【解决方案1】:

参见System.identityHashCode,它返回如果Object.hashCode 没有在对象上被覆盖时将返回的数字。它不是一个完美的身份代理,因为多个对象可能具有相同的身份哈希码,但它对于调试非常有用。

【讨论】:

    【解决方案2】:

    默认情况下,调试器会显示toString() 方法的结果以及对象的hashCode。所以,你可以通过执行hashCode()方法来查看值。

    【讨论】:

      【解决方案3】:

      我想您指的是 Objects toString() 实现。:

      return getClass().getName() + "@" + Integer.toHexString(hashCode());
      

      【讨论】:

        【解决方案4】:

        也许我错了,但我认为类的实例没有编号。我已经多次搜索获取特定类实例的方法,根据我的搜索,这是不可能的。实例有一个地址,但我认为类实例号没有用(对象在内存 AFAIK 中不按类排序)。请注意,您始终可以创建一种机制来为特定类的实例提供编号。在类中有一个静态计数,并将其值赋予您创建的每个新实例(在构造函数中)并每次递增。这将是区分实例的一种方式。

        【讨论】:

          猜你喜欢
          • 2021-10-30
          • 2017-05-14
          • 1970-01-01
          • 2018-02-20
          • 2012-11-26
          • 1970-01-01
          • 2019-07-08
          • 2010-10-12
          • 2019-07-08
          相关资源
          最近更新 更多