Skip to content

开篇:java tostring()用法

SHIELDMARS edited this page Jul 22, 2015 · 1 revision

开篇:java tostring()用法


toString()方法

Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。 toString()方法将对象转换为字符串。看以下代码:

package tostring;

class Villain {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Villain(String name) {
		this.name = name;
	}

	public String toString() {
		return "我是微蓝我的名字是" + name;
	}
}

public class Orc extends Villain {

	private int orcNum;

	// 构造函数
	public Orc(String name, int orcNum) {
		super(name);
		this.orcNum = orcNum;
	}

	public void change(String name, int orcNum) {
		setName(name);
		this.orcNum = orcNum;
	}

	public String toString() {
		return "Orc" + orcNum + ":" + super.toString();
	}

	public static void main(String[] args) {
		Orc orc = new Orc("张三", 12);
		System.out.println(orc);
		orc.change("李四", 19);
		System.out.println(orc);
	}
}

结果: Orc12:我是微蓝我的名字是张三 Orc19:我是微蓝我的名字是李四

2.在容器类中使用toString()

编写一个工具类,用于在控制台输出Iterator。

package tostring;

import java.util.Iterator;

public class Printer {
static void printAll(Iterator<?> e){
	while(e.hasNext()){
		System.out.println(e.next());
	}
}
}

在Hamster类中重写父类的toString()方法。

package tostring;

public class Hamster {
	private int hamsterNumber;

	public Hamster(int hamsterNumber) {
		this.hamsterNumber = hamsterNumber;
	}

	public String toString() {
		return "This is Hamster#" + hamsterNumber;
	}
}

在HamsterMaze类中使用容器类加载Hamster类对象并输出结果。

package tostring;

import java.util.ArrayList;
import java.util.List;

public class HamsterMaze {
	public static void main(String[] args) {
		List<Hamster> list = new ArrayList<Hamster>();
		for (int i = 0; i < 3; i++) {
			list.add(new Hamster(i));
			Printer.printAll(list.iterator());
		}
	}
}

结果: This is Hamster #0 This is Hamster #1

###3.一个实现toString()的通用的Bean-工具方法

在作一个项目时发现,许多bean需要实现toString()方法,就实现一个通用的bean,然后通过其他继承即可。

package tostring;

import java.lang.reflect.Field;

public class BaseBean {

	public String toString() {
		StringBuffer sb = new StringBuffer();
		try {
			Class t = this.getClass();
			Field[] fileds = t.getDeclaredFields();
			for (int i = 0; i < fileds.length; i++) {
				Field field = fileds[i];
				field.setAccessible(true);
				sb.append("{");
				sb.append(field.getName());
				sb.append(":");
				if (field.getType() == Integer.class) {
					sb.append(field.getInt(this));
				} else if (field.getType() == Long.class) {
					sb.append(field.getLong(this));
				} else if (field.getType() == Boolean.class) {
					sb.append(field.getBoolean(this));
				} else if (field.getType() == char.class) {
					sb.append(field.getChar(this));
				} else if (field.getType() == Double.class) {
					sb.append(field.getDouble(this));
				} else if (field.getType() == Float.class) {
					sb.append(field.getFloat(this));
				} else
					sb.append(field.get(this));
				sb.append("}");

			}
		} catch (Exception e) {

			e.printStackTrace();
		}
		return sb.toString();
	}
}

测试类:

package tostring;

public class TestBean extends BaseBean{
	private String name;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public TestBean(String name, int age) {
		this.name = name;
		this.age = age;
	}
	public static void main(String[] args) {
		TestBean testBean=new TestBean("张三",9);
		System.out.println(testBean);
	}
}

结果: {name:张三}{age:9}