java - 这在 Java 中 - 线程 "main"java.lang.StackOverflowError 中的异常

标签 java stack-overflow

为什么我会收到 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/

相关文章:

c# - 如何避免这个 stackoverflow 异常?

java - 如何修复此递归 StackOverFlowException 错误?

java - 如何以编程方式访问窗口和 mac 受信任的证书存储

java - eachWithIndex 循环不稳定

java - java多线程中如何实现上下文切换

java - 在 Java 中捕获 StackOverflowError 是否安全?

java - 使用 javascript 和 java 从服务器下载文件到本地计算机

java - 如何编写和运行 apache Giraph 自定义代码?

.net - "AddInProcess.exe has stopped working"可以被抑制吗?

Haskell - 递归堆栈