所以,我有我的主類,它運行時調用private Secondary secondary = new Secondary();
。在輔助班,頂部有代碼private Main main = new Main();
。創建對象而不會導致堆棧溢出錯誤?
我將如何使用Secondary類中的所有方法和變量,反之亦然,而不會導致堆棧溢出錯誤?
注:他們不是在構造函數中
所以,我有我的主類,它運行時調用private Secondary secondary = new Secondary();
。在輔助班,頂部有代碼private Main main = new Main();
。創建對象而不會導致堆棧溢出錯誤?
我將如何使用Secondary類中的所有方法和變量,反之亦然,而不會導致堆棧溢出錯誤?
注:他們不是在構造函數中
主類是創建一個輔助實例,這是創建一個主實例......,這是導致堆棧溢出錯誤。
我想你只是希望對象互相引用,所以不要在構造函數中創建其他類的新實例。將引用聲明爲實例變量,並使用setter方法來存儲對其他類型對象的現有引用。
您可以使用builder pattern來處理實例字段(通過setter)的安全(非遞歸)初始化。
你的問題沒有多大意義:堆棧溢出錯誤是由調用過多的嵌套方法造成的,而不是通過創建對象。 – Wyzard
@Wyzard:它非常有意義 - 初始化一個'Secondary'需要初始化一個新的'Main',它需要初始化一個新的'Secondary'等。它是遞歸構造,而不是遞歸方法調用。 –
@JonSkeet,只有在調用是在構造函數中,問題沒有指定,儘管它似乎是一個似是而非的解釋。我假定第一句是指代* * static *'main()'方法中的代碼。 – Wyzard