Javaでコンストラクタで作成された未割り当てたオブジェクトの寿命は何ですか?

Vamshi:

私は以下のように定義されたコンストラクタを持つクラス(A)を有します。以下に示すように、コンストラクタで、私はそれにリスナー(インタフェース)の実装を渡すことによって、Bのオブジェクトを作成しました。

public class A {

    private String str;

    public A() {

       new B(new OnStringUpdatedListener() {

           public void onStringUpdated(String str) {
               A.this.str = str;
           }

       });
    }
}

Bの上記のコードオブジェクト内Aの任意のフィールドまたはコンストラクタ内の変数に割り当てられていません。

Bのオブジェクトの寿命は何ですか?それはすぐに、コンストラクタの実行が完了したとしても、それはAのフィールドを変更し、リスナーを登録して以来、まだ生きていると、ガベージコレクションのためにマークされています。

アンドリューTobilko:

@Thomas'はコメントはいいです。

それはどのような問題ではありませんOnStringUpdatedListener修正を。コンストラクタが実行された後、B任意の参照を介してアクセスすることはできません。これは、GCの対象になるだろうとガベージコレクトすること。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=204019&siteId=1