Re: [問題] 在建構子殺掉自己的問題
100% stack overflow....
你這是無窮的間接遞迴(Recursive)....
※ 引述《montreal.bbs@ptt.cc (╮(╯3╰)╭)》之銘言:
: 大家好!
: 當我在建構子想要殺掉自己的時候,遇到一個奇怪的問題
: 下面程式描述一個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
--
╭──── Origin:<不良牛牧場> bbs.badcow.com.tw (210.200.247.200)─────╮
│ ↘ Welcome to SimFarm BBS -- From : [59.112.103.49] │
╰◣◣◢ ◢◢《不良牛免費撥接→電話:40586000→帳號:zoo→密碼:zoo》 ◣◣◢ ─╯
討論串 (同標題文章)