[Effective Java] (10)始终要覆盖toStri
2018-01-08 本文已影响0人
QyQiaoo
toString的通用约定指出,被返回的字符串应该是一个“简洁的,但信息丰富,并且易于阅读的表达形式”,并建议所有的子类都覆盖这个方法。
-
提供好的toString实现可以使类用起来更加舒适。当对象被传递给println、printf、字符串联操作符(+)以及assert或者被调试器答应出来时,toString方法会自动调用;
-
在实际应用中,toString方法应该返回对象中包含的所有值得的关注的信息;
-
在实现toString的时候,必须做出决定:"是否在文档中指定返回值的格式":
好处:它可以备用在一种标准的、明确的、适合人阅读的对象表示法。这种表示法可以用于输入和输出,以及用在永久的适合于人类阅读的数据对象中,如XML文档。若指定了格式,最好在提供一个相匹配的静态工厂或者构造器,以便容易的在对象和它的字符串表示法之间来回转换。并且不指定格式,就可以保留灵活性,便于在将来的发行版本中增加信息,或者改进格式
缺点:如果这个类已经被广泛使用,一旦指定格式,就必须始终如一地坚持这种格式,如果将来的发行版本中改变了这种表示法,就会破坏他们的代码和数据。
注:无论是否制定格式,都应该在文档中明确的表明。