Java:获取静态变量的当前值

时间:2013-02-28 01:34:46

标签: java

我正在尝试使用唯一ID创建一堆对象。我实现这个的第一个想法是有一个静态变量来计算对象的数量。每次创建对象时,静态变量都会增加1并写下来作为对象的ID。

兴高采烈地,我实现了代码:

    public class Order {
        static int totalOrdersPlaced;
        public int orderID;

        public void Order() {
            totalOrdersPlaced++;
            orderID = totalOrdersPlaced;
        }
    }

...由于我大致理解的原因,抛出了“无法对非静态字段进行静态引用”错误。但我无法弄清楚如何实现我想要的东西。

tl; dr:如何让程序获取静态变量的当前值并存储它?

3 个答案:

答案 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);
}
}

证明:http://ideone.com/n06npg