Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

無限ループになってしまいます。

以下のプログラムで無限ループになってしまいます。

class A
{
    B b = new B();
}
class B
{
    A a = new A();
}
こんな感じで2つのプログラムを参照しあって、
そこで処理が止まってしまいます。
どのようにしたら、それを食いとめられるでしょうか?

3

回答

12768

閲覧

3件の回答

評価

0

途中で止めたいなら、何か条件があるだろう。
どうなったら止まればいいんだ?
まずはそれを明確にすること。
プログラムは書いた通りに動くんだから、明確でないものを
つくることはできない。

評価

30

両方で new したら参照し合えません。お互いに参照し合いたい場合
class A {
    B b = new B(this);
}
class B {
    final A a;
    B (A a) {
        this.a = a;
    }
}

評価

0

仙人さんありがとうございました。
仙人さんのおかげで、
プログラムまともに動くようになりました。
他に回答して下さった方もありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。