1 - 6 : クラス生成時エラー
めったに起きないとは思うが、あるクラスを new しただけで StackOverflowError になる例。 1. 任意の場所で ClassA を生成。 2. ClassA はコンストラクタで ClassB を生成。 3. ClassB はコンストラクタで ClassA を生成。 4. 2 と 3 を繰り返えされる。これにより無限にClassA, ClassBが生成されつづけStackOverfrowErrorが発生する。
[DoubleClass.java]
class ClassA {
public ClassB b;
ClassA(){
b = new ClassB();
}
}
class ClassB {
public ClassA a;
ClassB(){
a = new ClassA(); // StackOverflowError を防ぐにはこの行をコメントアウト
}
}
public class DoubleClass {
public static void main(String[] args) {
ClassA classA = new ClassA();
}
}
実行結果
java.lang.StackOverflowError
at ClassB.(DoubleClass.java:13)
at ClassA.(DoubleClass.java:5)
at ClassB.(DoubleClass.java:13)
...以下延々と続く