这在Java中 – 线程“main”java.lang.StackOverflowError中的异常

前端之家收集整理的这篇文章主要介绍了这在Java中 – 线程“main”java.lang.StackOverflowError中的异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么我收到stackoverflow错误

我的课 –

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 !!!

解决方法

你写了:
String rep = "Hex: " + this + ",Id: " + this.id;

在java中简单地写这意味着你间接调用this.toString().

我相信您正在尝试覆盖Object的toString()方法,并且在您的toString()版本中,您希望打印已传递的ID以及对象的哈希码.

所以要取代输出

String rep = "Hex: " + this + ",Id: " + this.id;

String rep = "Hex: "+ this.getClass().getName().hashCode() +",Id: " + id;

你会得到输出

Hex: 1800024669,Id: 123
原文链接:https://www.f2er.com/java/128569.html

猜你在找的Java相关文章