您的位置 首页 java

高效Java第十条始终要覆盖toString

Java . lang .Object默认实现的toString方法返回类名@散列码的无符号十六进制表示。

toString的通用约定

返回的 字符串 应该是一个“简洁的,但信息丰富的,并且易于阅读的表达形式”。

建议所有的子类都覆盖这个方法。

遵守toString的通用约定的意义

虽然遵守toString的约定并不像遵守equals和 hashCode 的约定那么重要,但是,提供好的toString实现可以使类用起来更加舒适。

使用println、 printf 、字符串联操作符(+)、assert、调试器打印对象的时候,toString方法会被自动调用。

下面是程序员经常使用的调试方式:

提供好的toString方法,不仅有益于这个类的实例,同样也有益于那些包含这些实例的引用的对象,特别是集合对象。

在实际应用中,toString方法应该返回对象所有值得关注的信息。

如果对象太大,或者对象中包含的状态信息难以用字符串来表达,这个时候,toString应该返回一个摘要信息。

理想情况下,字符串应该是自描述的。

在文档中指定返回值的格式

对于值类也建议这么做。

指定格式的好处是,它可以被用做一种标准的、明确的、适合人阅读的对象表示法。

这种表示法可以用于输入和输出,以及用在永久的适合于人类阅读的 数据对象 中,例如XML文档。

如果指定了格式,最好再提供一个相匹配的静态工厂或者 构造器 ,以便程序员可以很容易地在对象和它的字符串表示法之间来回转换,如BigInteger、BigDecimal和绝大多数的基本类型包装类(值类)。

在文档中指定返回值的格式的不足

如果这个类已经被广泛使用,一旦指定格式,就必须始终如一地坚持这种格式。

如果不指定格式,就可以保留灵活性,以便于在将来的发行版本中增加信息,或者改进格式。

无论你是否决定指定格式,都应该在文档中明确地表示你的意图。

在文档中指定返回值的格式的例子

不在文档中指定返回值的格式的例子

都为toString返回值中包含的所有信息,提供一种编程式的访问途径

如果不这么做,就会迫使那些需要这些信息的程序员不得不自己去解析这些字符串。

除了降低了程序的性能,使得程序员们不得不做这些不必要的工作之外,这个解析过程也很容易出错,会导致系统不稳定,如果格式发生变化,还会使系统崩溃。如果没有提供这些访问,即使你已经指明了字符串的格式是可以变化的,这个字符串格式也成为事实上的API。

文章来源:智云一二三科技

文章标题:高效Java第十条始终要覆盖toString

文章地址:https://www.zhihuclub.com/174171.shtml

关于作者: 智云科技

热门文章

网站地图