当前位置: 首页 > 面试题库 >

当我们重写toString()方法时,我们应该始终返回对象的字符串表示形式吗?

饶元章
2023-03-14
问题内容

实际上,toString方法应返回对象的String表示形式。

在一个项目中,我发现一些类重写了toString方法,从而允许返回null。

喜欢:

@Override
public String toString() {
    .......
    return null;
}

对我来说,这种做法违反了toString方法的主要建议,后者应返回对象的String表示形式。

API文档的Object.toString()说:

公共字符串toString()

返回对象的html" target="_blank">字符串表示形式。通常,toString方法返回一个“以文本形式表示”此对象的字符串。结果应该是简洁易懂的陈述,便于人们阅读。建议所有子类都重写此方法。

当我们重写Object的toString()方法时,永远不要返回null?


问题答案:

toString主要用于表示对象是程序员的情况,例如调试和日志记录,我们需要查看对象的某些文本版本。使用对象中的信息,当您在日志文件或调试器中看到该信息时,该信息将对您有用。摘自Effective
Java,第3章,第10条:

尽管它不像遵守equals和hashCode契约(第8项,第9项)那么重要,但是提供良好的toString实现会使您的类使用起来更加愉快。当将对象传递给println,printf,字符串连接运算符或断言或由调试器打印时,toString方法将自动调用。

API文档中有关Object#toString的建议是:

通常,toString方法返回一个“以文本形式表示”此对象的字符串。结果应该是简洁易懂的陈述,便于人们阅读。建议所有子类都重写此方法。

返回null永远不会视为提供信息,并且很容易引起误解。似乎有人在使用toString来完成原本不希望的事情。



 类似资料:
  • 问题内容: 我一直在研究PDO 。我知道用PDO准备我的SQL语句可以防止发生SQL注入。 代码示例: 通过将ID绑定为数字,并且Title是字符串,我们可以限制当有人尝试在代码中进行SQL注入时所造成的损害。 我们是否应该始终将值与a绑定,以便可以限制在SQL注入中可以从数据库中提取的内容?这样在执行PDO时会增加PDO的安全性吗? 问题答案: 一个有两个问题。重要的是不要混淆它们 我们是否应该

  • 问题内容: 在编写自己的类时,是否总是有必要重写? 如果我不这样做,它将自动检查所有字段是否相同?还是只是检查两个变量是否指向同一个对象? 问题答案: 如果正在编写将要以某种方式比较其对象的类,则应重写和方法。 不提供显式方法将导致从超类继承该方法的行为,并且在超类为类的情况下,它将成为Java API规范中针对该类设定的行为。 提供方法的一般约定可以在该类的文档中找到,特别是and 方法的文档。

  • DaoCloud 企业版交付形式 我们采取混合云形态交付,根据用户的选择,DaoCloud 将把部分或全部 DaoShip 容器自动化交付流水线在客户提供的环境中部署,然后通过跨云跨网的方式与 DaoCloud 主站连接。这类独创的混合形态,为用户提供了以下便利: 在可控的自有主机资产上保存核心的源代码仓库和镜像仓库,免除对代码或核心知识产权安全的担心。 DaoCloud 可以将容器自动化交付流水

  • 问题内容: 我目前正在从Java教程oracle学习Java类和对象,并且遇到了以下语句和代码。我理解这个概念,但是不知道为什么我们不能覆盖一个方法并定义它以返回原始方法的超类?背后的原因是什么?有人可以启发我吗?在此先感谢您的帮助! 您可以重写方法并定义它以返回原始方法的子类,如下所示: 覆盖原始方法: 问题答案: 想象一下是否有可能: 瞧,这只是合同问题。当您去咖啡店时,您期望它可以出售咖啡。

  • 我知道这可能是非常基本的,也可能是非常直接的,但我无法清楚地理解在这种情况下会发生什么,所以,就这样吧。 在以下代码中: 我知道str1和str2将在字符串常量池中分别创建一个对象“Hello”和“World”。而对于str3,将在字符串常量池外部创建一个新对象,该对象指向在字符串常量池内部创建的“HelloWorld”。 我的问题是,如果我concat 2个或更多字符串(使用“”或concat(

  • 本文向大家介绍JavaScript中用toString()方法返回时间为字符串,包括了JavaScript中用toString()方法返回时间为字符串的使用技巧和注意事项,需要的朋友参考一下  此方法返回表示指定日期对象的字符串。 语法 下面是参数的详细信息:     NA 返回值: 返回表示指定日期对象的字符串 例子: 这将产生以下结果: