1

我有一个对象,Mutation,我已经“新建”了。但是当它使用 toString() 打印出来时,该对象会显示 Mutation@0。这对我来说似乎不太好。这可能意味着什么?

4

2 回答 2

3

那是无符号十六进制表示

根据 Object 类中 toString() 方法的文档

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

从某种意义上说zero ,哈希码尚未计算。

源代码:

   public String toString() {
237        return getClass().getName() + "@" + Integer.toHexString(hashCode());
238    }
于 2013-09-03T12:56:27.773 回答
1

如果您查看 的源代码Mutation,您很可能会在其中找到:

@Override public int hashCode() { 
   //TODO: implement this properly!
   return 0; 
}

的默认实现仅报告返回 0的toString()事实。hashCode

于 2013-09-03T13:11:15.387 回答