Bor*_*yev 6 java stack-overflow
为什么我收到stackoverflow错误?
我的课 -
public class Tester {
int id;
Tester(int id){
this.id = id;
}
public String toString(){
String rep = "Hex: " + this + ", Id: " + this.id;
return rep;
}
}
Run Code Online (Sandbox Code Playgroud)
主要方法 -
class Driver{
public static void main(String [] args){
Tester t = new Tester(123);
System.out.println(t);
}
}
Run Code Online (Sandbox Code Playgroud)
错误 -
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 !!!
Run Code Online (Sandbox Code Playgroud)
JB *_*zet 16
因为
"Hex: " + this
Run Code Online (Sandbox Code Playgroud)
相当于
"Hex: " + this.toString()
Run Code Online (Sandbox Code Playgroud)
并且你是从那里做的toString(),所以toString()调用自己,调用自己,自称...
你写了:
String rep = "Hex: " + this + ", Id: " + this.id;
Run Code Online (Sandbox Code Playgroud)
在Java中,简单地编写this意味着您在间接调用this.toString()。
我相信您正在尝试覆盖您要打印的id和对象的id的版本中的toString()方法。ObjecttoString()hashcode
所以要得到输出替换
String rep = "Hex: " + this + ", Id: " + this.id;
Run Code Online (Sandbox Code Playgroud)
与
String rep = "Hex: "+ this.getClass().getName().hashCode() +", Id: " + id;
Run Code Online (Sandbox Code Playgroud)
您将得到的输出为:
Hex: 1800024669, Id: 123
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13247 次 |
| 最近记录: |