10. 【对于所有对象都通用的方法】尽量覆盖toString方法

本文是《Effective Java》读书笔记第10条,其中内容可能会结合实际应用情况或参考其他资料进行补充或调整。


这一条其实没有什么可说的。
我们都知道,Object默认有toString方法的实现,但是默认的实现是“类名@散列码的无符号十六进制表示”。就好像别人问你“你在看什么?”,你回答“我在看电影”一样几乎没有什么价值,因为人家想了解的是你在看什么电影。
另外再考虑一种情况,就是你的类的对象在Map这样的集合中,那么Map对象在使用toString方法后返回“movie1=Movie@3e9548”好还是返回“movie1=Avatar”好呢,答案显而易见。

具体例子就不用给了吧。关于toString还有一点点要嘱咐的就是,如果你在造轮子,那么最好对toString方法在注释中关于返回格式做明确的说明,并善意提醒“该返回格式有可能会在以后的版本中发生改变。。。”,因为有可能别人会拿到你的toString返回结果进行解析,一旦格式有变,人家岂不是要遭殃。当然还要在你的类中对关键域提供类似getter的编程式访问途径,以避免这种情况的出现。

你可能感兴趣的:(【书山有路】Effective,Java)