私は以下のコードを持っています:
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)
「In class A」と印字しています。予想どおりですが、スタック オーバー フロー エラーが発生するのはなぜですか?