您的位置:首页 > 编程语言 > Java开发

javatoString()用法

2014-04-02 10:50 381 查看
javatoString()用法
2007-06-1321:14
1toString()方法

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

System.out.println 会自动调用toString()


toString()方法将对象转换为字符串。看以下代码:
package sample;
class Villain {
privateString name;
protectedvoid set(String nm) {
name= nm;
}
publicVillain(String name) {
this.name= name;
}
publicString toString() {
return"I'm a Villain and my name is " + name;
}
}
public class Orcextends Villain {
privateint orcNumber;
publicOrc(String name, int orcNumber) {
super(name);
this.orcNumber= orcNumber;
}
publicvoid change(String name, int orcNumber) {
set(name);
this.orcNumber= orcNumber;
}
publicString toString() {
return"Orc" + orcNumber + ":" + super.toString();
}
publicstatic void main(String[] args) {
Orcorc = new Orc("Limburger", 12);
System.out.println(orc);
orc.change("Bob",19);
System.out.println(orc);
}
}
结果:
sample.Orc@11b86e7
sample.Orc@11b86e7

如果去掉注释,即加入2个toString()方法后,得到
结果:
Orc12:I'ma Villain and my name is Limburger
Orc19:I'ma Villain and my name is Bob
2.在容器类中使用toString()

编写一个工具类,用于在控制台输出Iterator。
importjava.util.Iterator;
public class Printer {
staticvoid printAll(Iterator e){
while(e.hasNext()){
System.out.println(e.next());
}
}
}
在Hamster类中重写父类的toString()方法。
public class Hamster {
privateint hamsterNumber;
publicHamster(int hamsterNumber){
this.hamsterNumber=hamsterNumber;
}
publicString toString(){
return"This is Hamster #"+hamsterNumber;
}
}
在HamsterMaze类中使用容器类加载Hamster类对象并输出结果。
importjava.util.ArrayList;
import java.util.List;
public classHamsterMaze {
@SuppressWarnings("unchecked")
publicstatic void main(String[] args){
Listlist=new ArrayList();
for(inti=0;i<3;i++)
list.add(newHamster(i));
Printer.printAll(list.iterator());
}
}
结果:
Thisis Hamster #0
Thisis Hamster #1
Thisis Hamster #2
3.一个实现toString()的通用的Bean

在作一个项目时发现,许多bean需要实现toString()方法,就实现一个通用的bean,然后通过其他继承即可。
importjava.lang.reflect.Field;
public class BaseBean {

publicString toString() {
StringBuffersb = new StringBuffer();
try{
Classt = this.getClass();
Field[]fields = t.getDeclaredFields();
for(int i = 0; i < fields.length; i++) {
Fieldfield = fields[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();
}
returnsb.toString();
}
}
测试类
public class TestBeanextends BaseBean {
privateint id;
publicint getId() {
returnid;
}
publicvoid setId(int id) {
this.id= id;
}
publicstatic void main(String[] args) {
TestBeantestBean = new TestBean();
testBean.setId(9);
System.out.println(testBean.toString());
}
}
结果
{id:9}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: