如何防止重载toString方法时产生递归调用
来源:互联网 发布:重庆java招聘 编辑:程序博客网 时间:2024/06/02 23:21
在Java中任何对象都继承于Object类,因此,每个类都有一个toString方法用于返回当前对象的字符串形式(可能是对象地址或其他和对象相关的信息)。在每个类中也可以覆盖toString方法以返回自定义的字符串。如下面的代码将以一定的格式返回对象的地址:
package string;
public class InfiniteRecursion
...{
public String toString()
...{
return "address:" + this;
}
public static void main(String[] args)
...{
System.out.println(new InfiniteRecursion().toString());
}
}
public class InfiniteRecursion
...{
public String toString()
...{
return "address:" + this;
}
public static void main(String[] args)
...{
System.out.println(new InfiniteRecursion().toString());
}
}
如果运行上面的程序,将抛出StackOverflowError异常,这说明程序的工作栈溢出了。导致这种情况最常见的错误就是无限递归。这们发现在toString中使用this来返回对象的地址,如果这样调用,将会无限调用InfiniteRecursion类的toString方法。如果要避免这种情况的出现,要将toString改成如下的形式:
public String toString()
...{
return "address:" + super.toString();
}
...{
return "address:" + super.toString();
}
也就是说,不能再调用当前类的toString方法,必须调用当前类父类的toString方法才能返回正确的结果。
注:此文可任意转载,但要注明作者和出处
注:此文可任意转载,但要注明作者和出处
- 如何防止重载toString方法时产生递归调用
- 如何防止覆盖(override)toString方法时产生递归调用
- 如何防止覆盖(override)toString方法时产生递归调用
- 在toString()方法中不要单独使用this关键字,否则会产生递归调用
- Number调用toString()方法产生的问题
- toString方法导致的递归调用
- 重载tostring()方法重要性
- 重载tostring()方法重要性
- java方法重载与递归调用
- 方法的创建、重载及递归调用
- Java方法创建和重载、递归调用
- Java中的syso方法是如何调用toString()方法的
- toString方法的调用
- 自动调用toString方法
- 如何防止私有方法被反射调用?
- iOS 如何防止多次调用didUpdateLocations方法
- java 打印对象时时如何调用对象toString()方法的
- 十天学完java基础-方法重载和递归调用
- sdk toolbar建立
- 苏菲的世界
- 北京绿卡
- 使用 Visual Studio 2005 设计设备应用程序的用户界面和数据
- 高质量C++/C编程指南 -- 第8章 C++函数的高级特性
- 如何防止重载toString方法时产生递归调用
- 高质量C++/C编程指南 -- 第9章 类的构造函数、析构函数与赋值函数
- Who am I...
- 项目总结
- 高质量C++/C编程指南 -- 第10章 类的继承与组合
- struts MVC模型删除数据库
- 如何在 VC 中进行 UNICODE 的设置
- C/C++ 编程基础篇之浅析堆&栈
- Struts配置文件详解,web.xml以及struts-cofig.xml,以及struts-cofig.xml中各个标签的作用。