javatoString()用法

来源:互联网 发布:不给转出域名怎么处理 编辑:程序博客网 时间:2024/05/16 08:48

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

如果去掉注释,即加入2toString()方法后,得到

结果:

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}


0 0
原创粉丝点击