Chinaunix首页 | 论坛 | 博客
  • 博客访问: 199357
  • 博文数量: 163
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-08 11:41
文章分类

全部博文(163)

文章存档

2011年(1)

2009年(162)

我的朋友

分类:

2009-07-07 17:34:16

在Java中任何对象都继承于object类,因此,每个类都有一个toString方法用于返回当前对象的字符串形式(可能是对象地址或其他和对象相关的信息)。在每个类中也可以覆盖toString方法以返回自定义的字符串。如下面的代码将以一定的格式返回对象的地址:

  1. package ;  

  2. public  InfiniteRecursion  
  3. {  
  4.     public String toString()  
  5.     {  
  6.         return ":" + this;  
  7.     }  
  8.     public static void main(String[] args)  
  9.     {  
  10.         .out.println(new InfiniteRecursion().toString());  
  11.     }  

  如果运行上面的程序,将抛出StackOverflowError异常,这说明程序的工作栈溢出了。导致这种情况最常见的错误就是无限递归。这 们发现在toString中使用this来返回对象的地址,如果这样调用,将会无限调用InfiniteRecursion类的toString方法。如 果要避免这种情况的出现,要将toString改成如下的形式:

  • public String toString()  
  • {  
  •     return "address:" + super.toString();  
  •   也就是说,不能再调用当前类的toString方法,必须调用当前类父类的toString方法才能返回正确的结果。

    阅读(257) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~