1

これはオブジェクトのインスタンスを数える有効な方法ですか? または、ファイナライズをオーバーライドしないでください。

public class MyClass{
    private int instances;
   public MyClass(){
       instances++;
   }    
   @Override
   public void finalize(){
       instances--;
   }
   public static int getInstances(){
       return instances;
   }
}

ソリューションはスレッドセーフである必要はありません

4

2 に答える 2

4

としてマークinstancesstatic volatileます。次に、メソッドをオーバーライドしないでください。また、コード AS-IS では、メソッド内の変数にfinalizeアクセスできないことに注意してください。instancespublic static int getInstances

于 2013-07-04T16:42:04.430 に答える
-2

あなたが達成しようとしていることがわかったら、アプリケーションで作成された MyClass のインスタンスの数を数えたいと思うでしょう。その場合は、インスタンス変数と getInstances メソッドを静的に宣言する必要があります。

public class MyClass{
   private static int instances;
   public MyClass(){
       instances++;
   }    
   @Override
   public void finalize(){
       instances--;
   }
   public static int getInstances(){
       return instances;
   }
}

また、インスタンスの名前を instancesCount (または単にカウント) に変更し、getInstances メソッドに対しても同じ名前変更を行います。

于 2013-07-04T16:45:20.697 に答える