我正在尝试使用唯一ID创建一堆对象。我实现这个的第一个想法是有一个静态变量来计算对象的数量。每次创建对象时,静态变量都会增加1并写下来作为对象的ID。
兴高采烈地,我实现了代码:
public class Order {
static int totalOrdersPlaced;
public int orderID;
public void Order() {
totalOrdersPlaced++;
orderID = totalOrdersPlaced;
}
}
...由于我大致理解的原因,抛出了“无法对非静态字段进行静态引用”错误。但我无法弄清楚如何实现我想要的东西。
tl; dr:如何让程序获取静态变量的当前值并存储它?
答案 0 :(得分:3)
The code in your question compiles.您的真实代码是否包含public static void Order()
?
无论哪种方式,我猜你打算在构造函数中执行此操作,因此请删除void
:
public class Order {
private static int totalOrdersPlaced;
public final int orderID;
public Order() {
totalOrdersPlaced++;
orderID = totalOrdersPlaced;
}
}
答案 1 :(得分:1)
删除
中的void
public void Order() {
totalOrdersPlaced++;
orderID = totalOrdersPlaced;
}
构造函数不应该有返回类型
..最初由MattBall确定
为所需变量生成getter和setter,并使用getter方法获取值。
答案 2 :(得分:1)
public class Order {
static int totalOrdersPlaced;
public int orderID;
public void Order() {
totalOrdersPlaced++;
orderID = totalOrdersPlaced;
}
}
如果将Order()
方法转换为构造函数,将起作用。(删除void
)。
这是一个测试代码:
public class Order {
static int totalOrdersPlaced;
public int orderID;
public Order() {
totalOrdersPlaced++;
orderID = totalOrdersPlaced;
}
public static void main(String[] args) {
Order order = new Order();
System.out.println(order.totalOrdersPlaced);
Order order2 = new Order();
System.out.println(order2.totalOrdersPlaced);
}
}