2012-11-02 5 views
1

따라서 메인 클래스가 실행될 때 private Secondary secondary = new Secondary();을 호출합니다. Secondary 클래스에서 맨 위의 코드는 private Main main = new Main();입니다.스택 오버플로 오류가 발생하지 않고 개체를 만드시겠습니까?

스택 오버플로 오류가 발생하지 않고 보조 클래스의 모든 메소드와 변수를 사용하거나 그 반대로 사용할 수 있습니까?

참고 :이 생성자

+0

질문이 많은 의미가 없습니다. 스택 오버플로 오류는 개체를 만들지 않고 너무 많이 중첩 된 메서드를 호출하여 발생합니다. – Wyzard

+2

@Wyzard : 완벽한 의미입니다. 'Secondary'를 초기화하려면 새로운 'Secondary'를 초기화해야하는 새 Main을 초기화해야합니다. 재귀 적 메소드 호출이 아닌 재귀 적 생성입니다. –

+0

@JonSkeet, 호출이 생성자에있는 경우에만 해당 질문이 지정하지 않는데, 이는 그럴듯한 해석처럼 보입니다. 나는 첫 번째 문장이 * static *'main()'메소드의 코드를 가리키고 있다고 가정했다. – Wyzard

답변

2

메인 클래스는 홈페이지 예 ...를 만드는 보조 인스턴스를 만드는에없는,이 스택 오버플로 오류가 발생합니다.

나는 당신이 단지 서로를 참조하기를 원한다고 생각한다. 그래서 생성자에 다른 클래스의 새로운 인스턴스를 만들지 말라. 참조를 인스턴스 변수로 선언하고 setter 메서드를 사용하여 기존 참조를 다른 유형의 객체에 저장합니다.

0

builder pattern을 사용하면 인스턴스 필드를 세터를 통해 안전하게 (비회원 적으로) 초기화 할 수 있습니다.