我有一个类,它具有一个名为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值。
答案 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;
}
}