无论如何,每一个类都应该定义 toString 方法.为什么?

xzjjy 2006-05-25 12:27:35
看到一篇文章,里面有一句说是:"无论如何,每一个类都应该定义 toString 方法".我有些不太明白,请大家指点一二.
...全文
781 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzjjy 2006-05-29
  • 打赏
  • 举报
回复
明白了一些,谢谢
Java_caicainiao 2006-05-27
  • 打赏
  • 举报
回复
这是在effective里的话, 主要是让对象在打印时打印出有意义的值 而不是用从object那继承的打印 @类名+hashcode这样让人费解的字符串。
zt_soft 2006-05-27
  • 打赏
  • 举报
回复
无论如何??
可以不用,但如果要打印对象名啊之类的就复写toString()方法。
Camelh 2006-05-26
  • 打赏
  • 举报
回复
定义自己的toString(),可以用他来打印对象各个成员的内容,比较有用
dewdrop 2006-05-26
  • 打赏
  • 举报
回复
这个要看写的class有什么用了,我觉得没必要每个class都要toString(),
override了此方法在打印的时候清楚明了而已~。
Ryo_Hazuki 2006-05-26
  • 打赏
  • 举报
回复
是的
figoren 2006-05-26
  • 打赏
  • 举报
回复
应该不是强迫只是复写toString方法是一种好的习惯,可以方便调式
xzjjy 2006-05-26
  • 打赏
  • 举报
回复
顶,别不小心掉了下去
xiaoxiao130130 2006-05-26
  • 打赏
  • 举报
回复
自己在自定义类中重写了toString(),它在调试的时候用处很大,我是这样认为的
天外流星 2006-05-26
  • 打赏
  • 举报
回复
在开发过程中.如果有必要就自己重写toString()方法
gyang 2006-05-26
  • 打赏
  • 举报
回复
说toString用于调试,未免太局限,太过分了。
toString本身就具有很好的用途。
比如,我们知道 table的cell中接受任何类型对象。那么table中显示对象的什么呢?它就显示toString()返回的字符串。
看问题,要看其本质
nirvana_li 2006-05-26
  • 打赏
  • 举报
回复
这个说法见于joshua Bloch的effective java第9条 : 总是要改写toString

因为java.lang.Object提供了toString方法的一个实现,但是它返回的字符串通常并不是类的用户所期望看到的。它包含类的名字,以及一个"@"符号,接着是hashcode的无符号十六进制表示。比如“PhoneNumber@163b91”。

重写toString的必要性在于:
1.提供一个好的toString实现,可以使一个类用起来更加愉快。
2.在实际应用中,toString方法应该返回对象所包含的所有令人感兴趣的内容。
3.不管你是否决定指定格式,都应该在文档中明确的表明你的意图。
4.无论是否指定格式,为toString返回值中包含的所有信息,提供一种编程访问途径,这总使一种好的做法。
yinleiyoung 2006-05-26
  • 打赏
  • 举报
回复
可以方便开发人员调试,它是非常好的调试工具。
要为以后的开发人员着想
eswn 2006-05-26
  • 打赏
  • 举报
回复
kingofworl(良辰美景虚度) 正解,如果有条件的话,可以重写toString()方法。
  • 打赏
  • 举报
回复
是继承掉了,不是一定要去写的
eyeseaJason 2006-05-26
  • 打赏
  • 举报
回复
我接触的实际开发中,大部分类都不重写toString()的。因为那些处理逻辑功能的类,根本没机会被调用toString()方法的,如果这样的类与用户交互或写日志信息肯定有自己的方法。

对于那些经常要打印自身信息的类,定义一个合适的toString()方法,会使打印出来的信息更加友好和清楚;当然你不定义的话,就会调用Object类的toString()方法,你试验一下看看打印出来的信息很不友好。

这是我的理解。
onewalkingman 2006-05-26
  • 打赏
  • 举报
回复
不需要,Object中有toString()方法,而所有类继承Object,自己定义的话,无非是进行覆盖了!~
treeroot 2006-05-26
  • 打赏
  • 举报
回复
这样的话都说的出口,什么叫无乱如何都得呀
什么叫定义呀
AllanJD 2006-05-26
  • 打赏
  • 举报
回复
标准的项目开发中,并不是所有的Class都要重写toString()方法的。
基本要求是对自定义的数据类提供重写的toString()方法,如果父类已经提供了意义明确的toString()方法,子类就可以不在重写了。
江南编程浪子 2006-05-26
  • 打赏
  • 举报
回复
可以不定义的,
定义的作用是便于调试
加载更多回复(5)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧