JAVA基础之 容易忽视的toString()方法
|
1. 重写toString()方法 Object类具有一个toString()方法,你创建的每个类都会继承该方法,它返回对象的一个String表示。当你要用对象的字符串表示时,系统会自动调用对象的toString()方法,这对于调试非常有帮助。下面让我们来先看一段代码: public class ToStringTest{ private String name; public ToStringTest(String name){ this.name = name; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public static void main(String[] args){ ToStringTest test = new ToStringTest("sample"); System.out.println(test); } } 运行结果: ToStringTest@1fc86be 这个结果看起来怪怪的,它显然不是我们想要的结果,我们的意思不是想要输出name的值吗?这是因为在默认(不重载)的情况下,toString()方法返回的结果格式为类名@对象的16进制Hash表示。要正确输出我们想要的结果,就必须重写这个toString()方法: public class ToStringTest{ private String name; public ToStringTest(String name){ this.name = name; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public String toString(){ return name; } public static void main(String[] args){ ToStringTest test = new ToStringTest("sample"); System.out.println(test); } } 再次运行结果: sample 2. 在容器类中使用toString() 编写一个工具类,用于在控制台输出Iterator。 import java.util.Iterator; public class Printer{ public void printAll(Iterator it){ while(it.hasNext()){ System.out.println(it.next()); } } } 在Hamster类中重写父类的toString()方法。 public class Hamster{ private int num; public Hamster(int num){ this.num = num; } public String toString(){ return "This is Hamster #" + num; } } 在HamsterMaze类中使用容器类加载Hamster类对象并输出结果。 import java.util.ArrayList; import java.util.List; public class HamsterMaze{ 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 #0 This is Hamster #1 This is Hamster #2 3. 在JavaBean中实现toString()方法 在作一个项目时发现,许多bean需要实现toString()方法,就实现一个通用的bean,然后通过其他继承即可。 import java.lang.reflect.Field; } else if (field.getType() == Boolean.class) { } return sb.toString(); 编写测试类: public class TestBean extends BaseBean { 运行结果: {id:9} |
一共有 0 条评论