java中如何调用toString命名的方法?

[复制链接]
查看11 | 回复1 | 2010-5-1 15:19:46 | 显示全部楼层 |阅读模式
1.toString()方法Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。toString()方法将对象转换为字符串。看以下代码:package sample;class Villain {
private String name;
protected void set(String nm) {
name = nm;
}
public Villain(String name) {
this.name = name;
}
public String toString() {
return "I'm a Villain and my name is " + name;
}}public class Orc extends Villain {
private int orcNumber;
public Orc(String name, int orcNumber) {
super(name);
this.orcNumber = orcNumber;
}
public void change(String name, int orcNumber) {
set(name);
this.orcNumber = orcNumber;
}
public String toString() {
return "Orc" + orcNumber + ":" + super.toString();
}
public static void main(String[] args) {
Orc orc = new Orc("Limburger", 12);
System.out.println(orc);
orc.change("Bob", 19);
System.out.println(orc);
}} 结果:[email protected]@11b86e7如果去掉注释,即加入2个toString()方法后,得到结果:Orc12:I'm a Villain and my name is LimburgerOrc19:I'm a Villain and my name is Bob2.在容器类中使用toString()编写一个工具类,用于在控制台输出Iterator。import java.util.Iterator;public class Printer {
static void printAll(Iterator e){
while(e.hasNext()){
System.out.println(e.next());
}
}} 在Hamster类中重写父类的toString()方法。public class Hamster {
private int hamsterNumber;
public Hamster(int hamsterNumber){
this.hamsterNumber=hamsterNumber;
}
public String toString(){
return "This is Hamster #"+hamsterNumber;
}} 在HamsterMaze类中使用容器类加载Hamster类对象并输出结果。import java.util.ArrayList;import java.util.List;public class HamsterMaze {
@SuppressWarnings("unchecked")
public static void main(String[] args){
List list=new ArrayList();
for(int i=0;i<3;i++)
list.add(new Hamster(i));
Printer.printAll(list.iterator());
}} 结果:This is Hamster #0This is Hamster #1This is Hamster #23.一个实现toString()的通用的Bean在作一个项目时发现,许多bean需要实现toString()方法,就实现一个通用的bean,然后通过其他继承即可。import java.lang.reflect.Field;public class BaseBean {
public String toString() {
StringBuffer sb = new StringBuffer();
try {
Class t = this.getClass();
Field[] fields = t.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields;
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();
}} 测试类public class TestBean extends BaseBean {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static void main(String[] args) {
TestBean testBean = new TestBean();
testBean.setId(9);
System.out.println(testBean.toString());
}} 结果{id:9}本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liumx2007/archive/2008/08/23/2817567.aspx参考资料:http://blog.csdn.net/liumx2007/archive/2008/08/23/2817567.aspx

已赞过已踩过<
回复

使用道具 举报

千问 | 2010-5-1 15:19:46 | 显示全部楼层
Object类(所有类的父类),有toString方法,你定义的任何类都是Object类的子类,自然拥有toString方法比如定义 String s = new String("hello");可以使用s.toString();某一些基本数据类型,如int i;是没有的,但是如果是integer i = new integer();可以使用toString方法对于自己写的类,可以重写toString方法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行