实体类中重写toString()方法便于输出显示和监控调试

来源:互联网 发布:天津市软件学院 编辑:程序博客网 时间:2024/05/29 04:35

实体类UserInf:

package net.lc4ever.ldap.ad.test.testToString;public class UserInf {private String uid;private String uname;private String uNickname;private String sex;//-----以下3种重写的toString()方法无固定格式,你可以按照自己喜好改写---------//-------------①  inherited methods  ↓-----------------------//@Override//public String toString() {//return "UserInf [getClass()=" + getClass() + ", hashCode()="//+ hashCode() + ", toString()=" + super.toString() + "]";//}//------------②  Fields ↓--------------@Overridepublic String toString() {//return "UserInf [uid=" + uid + ", uname=" + uname + ", uNickname="//+ uNickname + ", sex=" + sex + "]";return "uid=" + uid + ", uname=" + uname + ", uNickname="+ uNickname;}//-----------------③  Methods ↓----------------------//@Override//public String toString() {//return "UserInf [getUid()=" + getUid() + ", getUname()=" + getUname()//+ ", getuNickname()=" + getuNickname() + ", getSex()="//+ getSex() + "]";//}public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public String getuNickname() {return uNickname;}public void setuNickname(String uNickname) {this.uNickname = uNickname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}

测试方法:

public static void main(String[] args) {UserInf user = new UserInf();user.setUid("11111");user.setSex("人妖");user.setUname("泰国农夫");Map<String,Object> m = new HashMap<String,Object>();m.put("movie", "拳皇");m.put("user", user);System.out.println("user:"+user+" ,user的类型:"+user.getClass().getName());}

测试结果:

当实体类UserInf没写toString()方法时,Map m里面的值是这样的(打断点调试):


实体类显示的是:实体类路径@内存生成的一个值。

最后System.out.println输出的是:

user:net.lc4ever.ldap.ad.test.testToString.UserInf@1e933c07 ,user的类型:net.lc4ever.ldap.ad.test.testToString.UserInf


当重写toString()方法时,Map m里面的值是这样的:


看着奇怪,m显示貌似很混乱,其实就是两个key_value对,

最后System.out.println输出的是:

user:uid=11111, uname=泰国农夫, uNickname=null ,user的类型:net.lc4ever.ldap.ad.test.testToString.UserInf

这时注意了,user是按toString()的方式输出的,但它还是UserInf类。

这就是写与没写toString()方法的区别:

1、在大量代码调试的时候它的作用就凸显了,可以很方便的查看这个实体类含带的属性的值,无需一层层翻看实体类的属性找值了。有些复杂的实体变量很难在调试的时候找到它含带的值,这时候toString()就显得很有用,容易监控实体类属性值变动和走向。

2、在输出显示实体类的易查看。实体类可以像String一样方便的输出显示。

1 0
原创粉丝点击