╮(╯3╰)╭
2007-03-20 12:13:11 UTC
大家好!
當我在建構子想要殺掉自己的時候,遇到一個奇怪的問題
下面程式描述一個class "Tester" 在建構子中新增另一個class AnotherClass
而AnotherClass則在建構子中呼叫母類別的killAnotherClass()殺掉自己
public class Tester {
AnotherClass aClass = null;
public Tester() {
[1;36;40maClass = new AnotherClass(this);[m
if(aClass == null)
System.out.println("aClass == null");
else
[1;31;40mSystem.out.println("aClass != null");[m
}
public void killAnotherClass() {
[1;36;40maClass = null;[m
}
class AnotherClass {
AnotherClass(Tester parent) {
[1;36;40mparent.killAnotherClass();[m
}
}
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
[1;31;40mSystem.out.println(aClass.name);[m
}
public void killAnotherClass() {
[1;36;40maClass = new AnotherClass(this, "name b");[m
}
class AnotherClass {
String name;
AnotherClass(Tester parent, String _name) {
name = _name;
[1;36;40mparent.killAnotherClass();[m
}
}
public static void main(String[] argv) {
new Tester();
}
}
結果竟然出現可怕的java.lang.StackOverflowError
請問是哪裡出了問題?
謝謝 :Q
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.188.75
當我在建構子想要殺掉自己的時候,遇到一個奇怪的問題
下面程式描述一個class "Tester" 在建構子中新增另一個class AnotherClass
而AnotherClass則在建構子中呼叫母類別的killAnotherClass()殺掉自己
public class Tester {
AnotherClass aClass = null;
public Tester() {
[1;36;40maClass = new AnotherClass(this);[m
if(aClass == null)
System.out.println("aClass == null");
else
[1;31;40mSystem.out.println("aClass != null");[m
}
public void killAnotherClass() {
[1;36;40maClass = null;[m
}
class AnotherClass {
AnotherClass(Tester parent) {
[1;36;40mparent.killAnotherClass();[m
}
}
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
[1;31;40mSystem.out.println(aClass.name);[m
}
public void killAnotherClass() {
[1;36;40maClass = new AnotherClass(this, "name b");[m
}
class AnotherClass {
String name;
AnotherClass(Tester parent, String _name) {
name = _name;
[1;36;40mparent.killAnotherClass();[m
}
}
public static void main(String[] argv) {
new Tester();
}
}
結果竟然出現可怕的java.lang.StackOverflowError
請問是哪裡出了問題?
謝謝 :Q
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.188.75