-1

実行時に、クラスのインスタンス数を追跡する必要があります。オブジェクト指向の観点から、これを達成するために次の規則のどれを使用しますか?

選択肢

  1. クラスレベル変数(静的メンバ変数)
  2. グローバル変数
  3. コンストラクタ
  4. ローカル変数
  5. デストラクタ

選択肢1は私の選択です

私は正しいですか?

宿題ではありません。

私は Java プログラマーですが、C++ の質問に答えなければなりませんでした。

4

2 に答える 2

5

やや正しい。静的な WeakHashMap と、自分自身をマップに入れるコンストラクターがその仕事をすることができます。size() を呼び出すたびに、GC されたオブジェクトをチェックします。

もっとおっと(私が思うに)方法は、次のような静的ファクトリメソッドを使用することです:

class Trackable {
    private static WeakHashMap<Trackable, Object> map = new WeakHashMap<>();
    private static final Object dummy = new Object();

    public static Trackable newInstance() {
        Trackable instance = new Trackable();
        map.put(instance, dummy);
        return instance;
    }

    public static int getTrackedObjectSize() {
        return map.size();
    }

    private Trackable() {}
}
于 2012-09-03T17:28:02.310 に答える
0

staticこれはメンバーによって実現できます。クラスに対して 1 つのコピーのみが維持され、コンストラクターで同じコピーをインクリメントして、現在使用可能なインスタンスの数ではなく、作成されたインスタンスの数を追跡できるためです。

于 2012-09-03T17:18:19.717 に答える