0

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

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

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

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

...由于我大致理解的原因,它会引发“无法对非静态字段进行静态引用”错误。但我不太清楚如何实现我想要的。

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

4

3 回答 3

3

您问题中的代码已编译。你的真实代码有public static void Order()吗?

无论哪种方式,我猜您打算在构造函数中执行此操作,因此请删除void

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

    public Order() {
        totalOrdersPlaced++;
        orderID = totalOrdersPlaced;
    }
}
于 2013-02-28T01:36:26.140 回答
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

于 2013-02-28T01:40:40.087 回答
1

void中删除

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

构造函数不应该有返回类型

.. 最初由 MattBall 确定

为所需变量生成 getter 和 setter,并使用 getter 方法获取值。

于 2013-02-28T01:35:30.217 回答