0

オブジェクトが静的コンテキストで作成されたかどうかをJavaでコードで確認することは可能ですか?

背景: 特定のオブジェクトをそのタイプに応じて弱参照または強参照で格納するかどうかを決定したい (静的クラス/静的コンテキストで作成されたオブジェクト -> 強参照、通常のオブジェクト -> 弱参照)。おそらく長命のリクエスト内に参照を保持する必要があります。これは、参照対象への参照を保持している唯一のオブジェクトである可能性があります。私はAndroid用にプログラミングしているので、これらのオブジェクトはおそらくアクティビティであり、時代遅れの可能性のあるリクエストがまだ残っているという理由だけで、これらのアクティビティを保持したくありません。したがって、この場合は弱参照が必要です。しかし、リクエストが静的クラスまたは静的コンテキストで行われた場合、静的クラスを維持したいと思います(これらのクラスは通常、アクティビティ全体とは対照的に多くのメモリを消費しません)。

この要件が大雑把に聞こえないことを願っています。;) 将来的には、単一の通信サービスを優先してアクティビティ ベースの通信を交換する予定ですが、当面は弱参照 (および絶対に必要な場合は強参照) を使用した単純なソリューションでも十分です。

4

1 に答える 1

1

簡単に言えば:いいえ。

new キーワードは、(ファクトリ メソッドのような) 静的メソッド呼び出しとして想像できます。パラメーターを除いて、コンストラクターにコンテキストは渡されません (非静的内部クラスの場合、コンパイラーは魔法のように親オブジェクト参照をパラメーターとして追加します。これはソース コードでは見えません)。

これを行う簡単な方法は、コンストラクターにパラメーターを追加し、呼び出し元が必要なものを明示的に決定できるようにすることです。

于 2013-07-26T14:55:41.480 に答える