实际上,toString方法应返回对象的String表示形式.
在一个项目中,我发现了一些覆盖toString方法的类,允许返回null.
喜欢:
@Override
public String toString() {
.......
return null;
}
Run Code Online (Sandbox Code Playgroud)
对我来说,这种做法违反了toString方法的主要建议,该方法应该返回对象的String表示.
Object.toString()的API文档说:
public String toString()
返回对象的字符串表示形式.通常,toString方法返回一个"文本表示"此对象的字符串.结果应该是一个简洁但信息丰富的表示,便于人们阅读.建议所有子类都重写此方法.
当我们覆盖Object的toString()方法时,你永远不应该返回null?
Nat*_*hes 11
toString主要用于表示受众是程序员的事情,比如调试和日志记录,我们需要查看对象的某些文本版本.当您在日志文件或调试器中看到对象时,使用对您有用的信息.从Effective Java,第3章,第10项:
虽然它不像遵守equals和hashCode合同那样重要(Item 8,Item 9),但是提供一个好的toString实现会使你的类更加愉快.将对象传递给println,printf,字符串连接运算符或断言或由调试器打印时,会自动调用toString方法.
Object#toString的API文档中的建议是:
通常,toString方法返回一个"文本表示"此对象的字符串.结果应该是一个简洁但信息丰富的表示,便于人们阅读.建议所有子类都重写此方法.
返回null将永远不会被视为提供信息,并且很容易产生误导.似乎有人使用toString来做一些它从未打算过的事情.
Java语言规范不禁止从中返回null toString().相反,它明确承认可以返回null.
字符串连接运算符+(§15.18.1),当给定String操作数和引用时,将通过调用引用对象的toString方法将引用转换为String(如果引用或引用,则使用"null") toString的结果是一个空引用)
您引用的文本来自API文档Object.toString().和你一样,我读它时强烈暗示返回一个非null值.
返回非空值将是最有用的.返回null可能会在调试器中造成混淆,因此难以区分空引用和非常好的非空引用,以及来自toString()的遗憾的null返回值.
| 归档时间: |
|
| 查看次数: |
3446 次 |
| 最近记录: |