Effective Java —— 始终要覆盖toString方法

时间:2022-04-04 17:50:28

提供好的toString实现可以使类用起来更加舒适

如下有一个用户信息类:

package com.blog.effective.note10;

/**
* 〈用户信息〉<br>
*
* @author 未绪
* @time 2018/1/12 14:30
*/

public class UserInfo {

private String userName;
private String userSex;

public UserInfo(String userName,String userSex){
this.userName=userName;
this.userSex=userSex;
}
}

首先我们不重写他的toString()方法,测试代码以及结果如下:

package com.blog.effective.note10;

public class MethodToString {

public static void main(String[] args) {
UserInfo userInfo=new UserInfo("张三","男");
System.out.println(userInfo);
}

}

测试结果

com.blog.effective.note10.UserInfo@2503dbd3

是不是一点都看不懂这个输出是个什么鬼?

接下来我们来重写UserInfo类的toString()方法,在重写之前我们需要注意一点:toString()方法应该包含对象中所有值得关注的信息
一般编译器会帮我们自动生成toString()方法

    @Override
public String toString() {
return "UserInfo{" +
"userName='" + userName + '\'' +
", userSex='" + userSex + '\'' +
'}';
}

添加完上面的代码之后,我们再重新运行测试代码,得到的结果就非常的容易看懂了

UserInfo{userName='张三', userSex='男'}