加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 03:02:00 所属栏目:Java 来源:网络整理
导读:为什么我收到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 m
为什么我收到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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读