Два из моих toString() отображаются в бесконечном цикле, но я не уверен, в чем проблема. Я отлаживал это в течение нескольких часов и не вижу ничего, что было бы неправильно.Ошибка переполнения стека с помощью toStrings() (java)
Для контекста соответствующими частями основного являются: System.out.println (класс1); adminStaff1.assignInstructor (класс1, инструктор1); System.out.println (класс 1);
Первый println работает, но когда я отлаживаю, я вижу одну ошибку источника поиска до ее прохождения. Второй class1 создает 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 "Class [instructor=" + instructor + ", lectureHall="
+ lectureHall + ", currentEnrollment=" + currentEnrollment
+ ", timeSlot=" + timeSlot + ", filled=" + filled
+ ", studentList=" + studentList + "]";
}
ToString для инструктора:
@Override
public String toString() {
return "Instructor [salary=" + salary + ", classList=" + classList
+ ", openTimeSlots=" + openTimeSlots + ", "
+ super.toString() + "]";
}
и super.toString() является :
@Override
public String toString() {
return "[idNumber=" + idNumber + ", email=" + email
+ "]";
}
Я не знаю, почему, но adminStaff1.assignInstructor также, кажется, вносит свой вклад в проблему, это:
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() для eclipse. – Xerunix