【问题标题】:print `this` variable in android在android中打印`this`变量
【发布时间】:2012-12-12 13:11:48
【问题描述】:

有时 printf("%p", this) 有助于查看不同的实例。

在android中相当于什么?
(将this 变量的地址或唯一的东西(它可能不是address)打印到实例)

看来我可以像OnTouchListener 这样的new 接口那么,我如何打印一些东西来区分它们的不同实例?

【问题讨论】:

    标签: android logging this


    【解决方案1】:

    要获得与实例不同的内容,您应该使用System.identityHashCode(this)。它返回Object.hashCode() 的默认实现返回的内容(可能已在子类中被覆盖,所以这就是为什么你不应该直接使用.hashCode()),根据文档,它是“尽可能对于不同的对象来说是相当实用的”。

    【讨论】:

      【解决方案2】:

      应该这样做:

      android.util.Log.i("Instance", "This is: " + this);
      

      默认情况下,ObjecttoString 实现将打印类类型加上一个哈希码,这在某种程度上等同于 C++ 中的 this 指针

      Object 类的 toString 方法返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符 '@' 和哈希码的无符号十六进制表示形式组成。物体。换句话说,这个方法返回一个字符串等于:

      getClass().getName() + '@' + Integer.toHexString(hashCode())
      

      如果一个对象提供了不同的toString() 实现,例如String,那么您可以使用上述基本toString() 方法的规范实现来获得相同的结果。

      【讨论】:

      • hashCode() 可能会被覆盖,所以它可能不是不同的
      • @newacct: hashCode() 即使没有被覆盖,也可能不明显,但关于System.identityHashCode(this)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      相关资源
      最近更新 更多