[問題] 在建構子殺掉自己的問題
大家好!
當我在建構子想要殺掉自己的時候,遇到一個奇怪的問題
下面程式描述一個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
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 5 篇):