如何告诉对象创建了多少次?

时间:2019-01-18 13:33:54

标签: java class object

我有一个类,它具有一个名为int nth_instance的属性,并且我希望它计算创建的对象数量。 (我真的很抱歉英语不好,我不知道该怎么形容,但我希望你明白我的意思。)

这是我的方法。

class K{

   static int nth_instance;

   K(){
     nth_instance++; // here's the problem, every other instance gets the 
   }                 //  same value



   public static void main(String[] args){
     K k1 = new K(); // This object should have nth_instance set to 1
     K k2 = new K(); // n_th_instance should be 2, but k1 is now also 2
   }
 }

所以问题在于,每个K实例都获得了最后创建的对象的nth_instance值。

1 个答案:

答案 0 :(得分:3)

您还需要创建一个非静态字段,并将其分配给每个实例

class K{

   static int instancesCount; 
   // Or "static AtomicInteger instancesCount;" if you do multithreading

   final int nth_instance; // this is your non-static field


   K(){
     instancesCount++;
     this.nth_instance = instancesCount;

     // In case of multithreading, replace both lines by
     // this.nth_instance = instancesCount.incrementAndGet();
   }                 

   public static void main(String[] args){
     K k1 = new K(); //k1.nth_instance == 1;
     K k2 = new K(); //k1.nth_instance == 2;
   }
 }