我正在编写一个程序,我需要计算某个类(及其所有子类)创建的对象数。我做了一个快速测试程序来复制我的问题:
public class Test {
private int number = 0;
public Test(){
number++;
}
public int returnNumber(){
return number;
}
}
如何使变量'number'保存其值,而不是每次创建新对象时初始化?
答案 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;
}
}