ToString()的堆栈溢出错误(java)

ToString()的堆栈溢出错误(java),java,recursion,tostring,stack-overflow,Java,Recursion,Tostring,Stack Overflow,我的两个toString()似乎处于无限循环中,但我不确定问题出在哪里。我已经调试了几个小时了,没有发现任何错误 就上下文而言,主要文件的相关部分包括: 系统输出打印项次(1级); 行政人员1.指派讲师(一级,讲师1); 系统输出打印项次(1级) 第一个println可以工作,但是当我调试时,我看到一个源代码查找错误。第二个类1创建StackOverflowError,它是: Exception in thread "main" java.lang.StackOverflowError at j

我的两个toString()似乎处于无限循环中,但我不确定问题出在哪里。我已经调试了几个小时了,没有发现任何错误

就上下文而言,主要文件的相关部分包括: 系统输出打印项次(1级); 行政人员1.指派讲师(一级,讲师1); 系统输出打印项次(1级)

第一个println可以工作,但是当我调试时,我看到一个源代码查找错误。第二个类1创建StackOverflowError,它是:

Exception in thread "main" java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.lang.StringBuilder.<init>(Unknown Source)
at Instructor.toString(Instructor.java:59)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at Class.toString(Class.java:89)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.util.AbstractCollection.toString(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at Instructor.toString(Instructor.java:59)
讲师的toString是:

@Override
public String toString() {
    return "Instructor [salary=" + salary + ", classList=" + classList
            + ", openTimeSlots=" + openTimeSlots + ", "
            + super.toString() + "]";
}
而super.toString()是:

我不确定原因,但adminStaff1.1似乎也是造成问题的原因,原因是:

public void enrollStudent(Student student, Class aClass){
    aClass.checkIfFilled();
    if(!aClass.getFilled()){
        aClass.addStudent(student);
        student.addClass(aClass);
        aClass.increaseEnrollment();
    } else {
        System.out.println("Could not add student because the class is currently full.");
    }
}

如果有人能帮助我了解问题所在,我将不胜感激。谢谢。

当你在
课程上调用
toString()
时,它包括
讲师
(而
讲师
包括
课程
)。这是一个循环。也不要打破它

return "Instructor [salary=" + salary + /* ", classList=" + classList */
        + ", openTimeSlots=" + openTimeSlots + ", "
        + super.toString() + "]";
或者


非常感谢你!我想使用eclipse自动生成的toString()有点冒险。
public void enrollStudent(Student student, Class aClass){
    aClass.checkIfFilled();
    if(!aClass.getFilled()){
        aClass.addStudent(student);
        student.addClass(aClass);
        aClass.increaseEnrollment();
    } else {
        System.out.println("Could not add student because the class is currently full.");
    }
}
return "Instructor [salary=" + salary + /* ", classList=" + classList */
        + ", openTimeSlots=" + openTimeSlots + ", "
        + super.toString() + "]";
return "Class [lectureHall=" + lectureHall + ", currentEnrollment=" 
        + currentEnrollment + ", timeSlot=" + timeSlot + ", filled=" + filled
        + ", studentList=" + studentList + "]";