博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[改善Java代码]推荐覆写toString方法
阅读量:6944 次
发布时间:2019-06-27

本文共 1101 字,大约阅读时间需要 3 分钟。

建议49: 推荐覆写toString方法

为什么要覆写toString方法,这个问题很简单,因为Java提供的默认toString方法不友好,打印出来看不懂,不覆写不行,看这样一段代码:

1 public class Client { 2     public static void main(String[] args) { 3         System.out.println(new Person("张三")); 4     } 5 } 6  7 class Person { 8     private String name; 9 10     public Person(String _name) {11         name = _name;12     }13 14     public String getName() {15         return name;16     }17 18     public void setName(String name) {19         this.name = name;20     }21 }

输出的结果是:Person@1fc4bec。如果机器不同,@后面的内容也会不同,但格式都是相同的:类名 + @ + hashCode,这玩意就是给机器看的,人哪能看得懂呀!这就是因为我们没有覆写Object类的toString方法的缘故,修改一下,代码如下所示:

public String toString(){           return String.format("%s.name=%s",this.getClass(),name);      }

打印输出:

class cn.summerchill.test.Person.name=张三

如此就可以在需要的时候输出可调试信息了,而且也非常友好,特别是在Bean流行的项目中(一般的Web项目就是这样),有了这样的输出才能更好的debug,否则查找错误就如海底捞针呀!当然,当Bean的属性较多时,自己实现就不可取了,不过可以使用apache的commons工具包中的ToStringBuilder类,简洁、实用又方便。

可能有读者要说了,为什么通过println方法打印一个对象会调用toString方法?那是源于println的实现机制:如果是一个原始类型就直接打印,如果是一个类类型,则打印出其toString方法的返回值,如此而已!

 

转载于:https://www.cnblogs.com/DreamDrive/p/5428591.html

你可能感兴趣的文章
关于小程序你需要知道的事
查看>>
表服务器无法打开与报表服务器数据库的连接。所有请求和处理都要求与数据库建立连接...
查看>>
4月第4周业务风控关注 | 网络犯罪经济每年1.5万亿美元 GDP居全球第12位
查看>>
idea中gitlab新创建分支查找不到的原因
查看>>
php调试时echo,print_r(),var_dump()的区别
查看>>
vue 作用域插槽
查看>>
tfs 2013 利用 web deploy 完成asp.net站点自动发布
查看>>
dom对象常用的属性和方法有哪些?
查看>>
C#遍历XmlDocument对象所有节点名称、类型、属性(Attribute)
查看>>
范畴论-一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已
查看>>
Spring cloud系列之Zuul配置项中sensitiveHeaders和ignoredHeaders
查看>>
51单片机交通灯(定时器+38译码器+中断)
查看>>
vue 总结
查看>>
深入理解java虚拟机(二):java内存溢出实战
查看>>
31.QPainter-rotate()函数分析-文字旋转不倾斜,图片旋转实现等待
查看>>
直接通过Binder的onTransact完成跨进程通信
查看>>
非域环境下使用证书部署数据库(SqlServer2008R2)镜像
查看>>
JavaScript Practices
查看>>
JS中如何alert对象
查看>>
MySQL的四种事务隔离级别
查看>>