为什么我会收到 stackoverflow 错误?
我的类(class)-
public class Tester {
int id;
Tester(int id){
this.id = id;
}
public String toString(){
String rep = "Hex: " + this + ", Id: " + this.id;
return rep;
}
}
主要方法-
class Driver{
public static void main(String [] args){
Tester t = new Tester(123);
System.out.println(t);
}
}
错误-
Exception in thread "main" java.lang.StackOverflowError
at java.lang.String.length(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.lang.StringBuilder.<init>(Unknown Source)
at com.examscam.model.Tester.toString(Tester.java:13)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
---------REPEAT !!!
最佳答案
因为
"Hex: " + this
相当于
"Hex: " + this.toString()
并且您是从 toString()
执行此操作的,因此 toString()
调用自身,后者调用自身,后者调用自身...
关于java - 这在 Java 中 - 线程 "main"java.lang.StackOverflowError 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334336/