2013-02-28 25 views
0

我正嘗試創建一組具有唯一ID的對象。我的第一個想法是實現一個靜態變量來計算對象的數量。每次創建一個對象時,靜態變量都會增加1,並寫下對象的ID。Java:獲取靜態變量的當前值

興高采烈,我實現正是如此代碼:

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

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

...它拋出一個「不能讓一個靜態引用非靜態字段」的原因,我大致理解錯誤。但我無法弄清楚如何實現我想要的。

TL;博士:如何我使程序得到一個靜態變量的當前值和存儲呢?

回答

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; 
    } 
} 
+0

哦。噢親愛的。是的,那是......虛空不應該是......我現在覺得有點愚蠢。謝謝您的幫助。 (並且不,我的* real *代碼沒有'public static void Order()') – Klaabu 2013-02-28 01:45:55

1

中刪除void

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

構造不應該有返回類型

..最初由MattBall

生成所需的變量的getter和setter和使用getter得到的值來標識方法。

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