1 - 6 : クラス生成時エラー

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)

...以下延々と続く