【Effective Java 12】始终要覆盖 toString
1. 为什么要始终覆盖 toString
- 遵守
toString
约定并不像遵守equals
和hashCode
的约定那么重要。但是,提供好的toString
方法可以使类用起来更加舒适,使用这个类的系统也更易于调试。
2. 覆盖 toString 时的约定
- 在实际应用中,
toString
方法应该返回对象中包含的所有值得关注的信息。- 对于值类(value class),建议在文档中指定返回值的格式
- 如果指定了格式,通常最好再提供一个相匹配的静态工厂或者构造器,以便程序员可以很容地在对象及其字符串表示法之间来回转换。
- 无论是否决定指定格式,都应该在文档中明确地表明你的意图。
- 不论是否指定格式,都为 toString 返回值中包含的所有信息提供一种可以通过编程访问的模式