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

实体类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 ↓--------------
	@Override
	public 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 m = new HashMap();
		m.put("movie", "拳皇");
		m.put("user", user);
		System.out.println("user:"+user+" ,user的类型:"+user.getClass().getName());
	}

测试结果:

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

实体类中重写toString()方法便于输出显示和监控调试_第1张图片

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

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

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


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

实体类中重写toString()方法便于输出显示和监控调试_第2张图片

看着奇怪,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一样方便的输出显示。

你可能感兴趣的:(java)