因为java类基本上都继承自Object,而Object类中实现了toString()方法。所以类都有toString()方法。
下面看一段代码
目的:打印内存地址
但存在递归----->toString():
public class InfiniteRecursion {
public String toString() {
return " InfiniteRecursion address: " + this + "\n";
}
public static void main(String[] args) {
List<InfiniteRecursion> v =
new ArrayList<InfiniteRecursion>();
for(int i = 0; i < 10; i++)
v.add(new InfiniteRecursion());
System.out.println(v);
}
}
该类中重写了toString方法,并且该方法中返回了含有this关键字的字符串。在main函数中将该对象输出时又要调用toString()方法。这样便形成了递归调用。
解决的方法是:将toString()中的this 改为super.toString();这样调用的是父类的toString方法,不会与println()是发生冲突产生递归。