【问题标题】:Android Class "this" components [closed]Android类“this”组件[关闭]
【发布时间】:2016-02-09 09:17:51
【问题描述】:

当我在类方法中记录“this”时

Log.i(TAG, "this:"+this);

结果是:

this:android.myapp.MyView{43354c80 V.ED.... ........ 0,9-104,61 #7f0b0005 app:id/myViewID}

有字段

43354c80 - ?
V.ED.... ..... - ?一些位域,V 可能是可见性
0,9-104,61 - 剪辑矩形
#7f0b0005 - ?
app:id /myViewID - R.id.*

什么是“?”日志中的“this”字段?

=== 编辑 ===

因为所有的 cmets 都不可见,所以我从@Blackbelt answer & cmets 写了完整的答案。

在这种情况下:

43354c80 - hashCode()的结果
V - 可见
E - 启用
D - 取决于 setWillNotDraw()
0,9-104,61 - 绘制矩形
7f0b0005 - getId() 的结果 app:id/myViewID - id 作为字符串

【问题讨论】:

  • "" + obj 它始终是"" + obj.toString() ...查看 View 源代码以了解 View 的字符串表示形式返回的内容
  • "" + obj 它并不总是 "" + obj.toString()... 当我将 toString() 覆盖为自己的方法时
  • 也许并不总是,但在这种情况下是一样的
  • Tapa Save... 是的,它是... 即使您覆盖了 toString() 方法... Operator + 与 String 对象和其他一些非 String 对象将返回新的 String 被拆分形成字符串和第二个对象的字符串表示形式 - 从 toString() 形式返回的值...

标签: android class variables field


【解决方案1】:

如您所见,您在日志中看到的是 Object#toString()View 中的覆盖版本:

V 停留在View.VISIBLE

E 停留ENABLED

final int id = getId();
 if (id != NO_ID) {
        out.append(" #");
        out.append(Integer.toHexString(id));

它是视图的 id toHex。可以阅读完整方法here

【讨论】:

  • 您可以简单地说“#7f0b0005 它是 getId() 的结果”。类引用和字符串格式是没有问题的。值为 43354c80 的字段是什么?
  • 这是视图的哈希码
  • 感谢@Blackbelt 43354c80 它的 hashCode() 结果,#7... getID(),E 启用,其余的点我可以解释。
  • 嗯,当然View的hashcode是调用hashcode()的结果
  • 不理解这个带有-1的民族。这都知道???
猜你喜欢
  • 1970-01-01
  • 2016-06-05
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 2017-12-13
相关资源
最近更新 更多