我有以下代码:
ClassA.java
public class ClassA {
static boolean isDone = false;
public static void main(String[] args) {
System.out.println("In class A.");
if (!isDone) {
new ClassB();
isDone = true;
}
}
}
ClassB.java
public class ClassB {
ClassB () {
ClassA.main(null);
}
}
运行程序时,我得到以下输出:
In class A.
In class A.
Exception in thread "main" java.lang.StackOverflowError
at sun.nio.cs.SingleByte.withResult(Unknown Source)
at sun.nio.cs.SingleByte.access$000(Unknown Source)
at sun.nio.cs.SingleByte$Encoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByte$Encoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
它正在打印“A 类”。正如预期的那样,但为什么我得到堆栈溢出错误?