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

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


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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值