创建新对象时,我的计数器保持相同的数字

时间:2016-03-10 08:49:15

标签: java object

我正在编写一个程序,我需要计算某个类(及其所有子类)创建的对象数。我做了一个快速测试程序来复制我的问题:

public class Test {

   private int number = 0;

   public Test(){
       number++;
   }

   public int returnNumber(){
       return number;
   }
}

如何使变量'number'保存其值,而不是每次创建新对象时初始化?

5 个答案:

答案 0 :(得分:2)

number设为静态,以使其对所有类的实例具有相同的值。

private static int number = 0

您可能希望将returnNumber更改为静态。

如果您希望班级的每个实例都有唯一的号码,您应该将该号码保留在一个单独的成员中:

public class Test {

   private int number = 0;
   private static int counter = 0;
   public Test(){
       number = counter++;
   }

   public int getNumber() {
       return number; // each instance will have a unique value
   }

   public static int getCounter () {
       return counter; // this will return the current value of the counter
   }

}

答案 1 :(得分:2)

number必须是static类型,因此它在您班级的所有实例中共享。

请考虑private static int number = 0

更好的是,你应该使number成为原子类型,因此可以在多个线程上调用多个构造函数。 (否则你最终可能会低估number。)

考虑使用AtomicInteger作为类型;当然还是static

答案 2 :(得分:0)

将变量创建为静态

   private static int number = 0;

答案 3 :(得分:0)

成功

private static int number = 0;

答案 4 :(得分:0)

public class Test {

   private static int number = 0;

   public Test(){
       number++;
   }

   public int returnNumber(){
       return number;
   }
}