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の対象になるだろうともガベージコレクトすること。