[問題] 在建構子殺掉自己的問題

看板java作者 (╮(╯3╰)╭)時間19年前 (2007/03/20 20:13), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
大家好! 當我在建構子想要殺掉自己的時候,遇到一個奇怪的問題 下面程式描述一個class "Tester" 在建構子中新增另一個class AnotherClass 而AnotherClass則在建構子中呼叫母類別的killAnotherClass()殺掉自己 public class Tester { AnotherClass aClass = null; public Tester() { aClass = new AnotherClass(this); if(aClass == null) System.out.println("aClass == null"); else System.out.println("aClass != null"); } public void killAnotherClass() { aClass = null; } class AnotherClass { AnotherClass(Tester parent) { parent.killAnotherClass(); } } public static void main(String[] argv) { new Tester(); } } 奇怪的是,最後程式印出 aClass != null 難道killAnotherClass()失靈了嗎? 接著為了測試killAnotherClass有確實的被執行,我把程式稍微改寫如下: public class Tester { AnotherClass aClass = null; public Tester() { aClass = new AnotherClass(this, "name a"); if(aClass == null) System.out.println("aClass == null"); else System.out.println(aClass.name); } public void killAnotherClass() { aClass = new AnotherClass(this, "name b"); } class AnotherClass { String name; AnotherClass(Tester parent, String _name) { name = _name; parent.killAnotherClass(); } } public static void main(String[] argv) { new Tester(); } } 結果竟然出現可怕的java.lang.StackOverflowError 請問是哪裡出了問題? 謝謝 :Q -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.188.75
文章代碼(AID): #15_y_Ll5 (java)
討論串 (同標題文章)
文章代碼(AID): #15_y_Ll5 (java)