这是计算对象实例的有效方法吗?

时间:2013-07-04 16:39:41

标签: java object

这是计算对象实例的有效方法吗?或者我不应该覆盖finalize?

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

解决方案不一定是线程安全的

2 个答案:

答案 0 :(得分:4)

instances标记为static volatile。其次,从不覆盖finalize方法。此外,在代码AS-IS中,请注意您无法访问instances方法中的public static int getInstances变量。

答案 1 :(得分:-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方法执行相同的重命名。