作者montreal (╮(╯3╰)╭)
看板java
标题[问题] 在建构子杀掉自己的问题
时间Tue Mar 20 20:13:08 2007
大家好!
当我在建构子想要杀掉自己的时候,遇到一个奇怪的问题
下面程式描述一个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