在我接手的项目中,我看到了很多以下内容:
log.debug(submitObject(" + object + ")");
log.debug(registerUser(" + user + ")");
等等。
在日志中,这会打印出如下内容:
SubmitObject(java.lang.Object@13a317a)
仅记录对象类型及其哈希码是否有用?假设我想知道用户对象的名称但我只有哈希码,我可以根据哈希码重建对象吗?
来自 object.toString() 的 javadoc
返回对象的字符串表示形式。通常,toString 方法返回一个“以文本方式表示”该对象的字符串。结果应该是一个简洁但信息丰富的表示,易于人们阅读。建议所有子类重写此方法。Object 类的 toString 方法返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符“@”和对象的哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:对象的字符串表示。
我自己总是覆盖自定义对象的 toString() ,因此它会打印出对象的所有字段。我应该开始打印目标代码吗?