재귀함수(자기 자신을 부르는 함수)에서 영원히 자기를 불러서 안 끝나면 나타나는 오류이다.
package construct.ex;
public class Book {
String title;
String author;
int page;
Book(){
this("", "", 0);
}
Book(String title, String author){ //두번째 생성자라고 부르겠음
this(title, author); //오류
}
Book(String title, String author, int page) {
this.title = title;
this.author = author;
this.page = page;
}
void displayInfo(){
System.out.println("제목 : " + title + ", 저자 : " + author + ", 페이지 : " + page);
}
}

두번째 생성자를 보면 this()로 자기 자신을 부르는게 생성자 안의 실행 내용이기 때문에 두번째 생성자를 선언하고 사용하는 순간 영원히 뱅글뱅글 돌며 사용할 것이다.
그렇기 때문에 IDE가 오류를 띄어 알려줘서 그런 사태를 막는다.
이 오류를 알게된 계기가 this()의 사용법이 익숙하지 않아 생성자 안에서의 this()가 어떻게 변수를 줘야 어떤 생성자를 부르는지 몰라서 this() 안의 변수를 작성하고 지우고 하며 오류코드를 검색해서 알게 됐다.
재귀함수에서의 무한 호출일때 나는 오류인걸 깨닫고 나니 this()의 변수 개수가 생성자의 매개변수 개수와 동일할때 그 생성자를 부른다는 것을 알게 됐다.
'오류, 기능, 문제해결(JAVA)' 카테고리의 다른 글
| 계산기과제 레벨2 (0) | 2025.01.09 |
|---|---|
| Operator '+' cannot be applied to 'java.lang.String', 'void' (0) | 2025.01.05 |
| 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴 (0) | 2025.01.01 |
| 자연수 각 자릿수의 합을 구하기 (1) | 2024.12.31 |
| 내배캠 2주차 자바 숙제 풀다가 iterator() 관련 문제 (0) | 2024.12.31 |