2012-01-12 69 views
3

當我嘗試給我的枚舉值,它給了我這個錯誤:Java枚舉提供一個錯誤?

枚舉狀態的構造函數狀態不能應用於給定的類型; STATUS_OPEN(0),

爲什麼會發生這種情況,我該如何解決?

這裏是我的代碼至今:

public enum Status 
{ 
    STATUS_OPEN(0), 
    STATUS_STARTED(1), 
    STATUS_INPROGRESS(2), 
    STATUS_ONHOLD(3), 
    STATUS_COMPLETED(4), 
    STATUS_CLOSED(5); 

} 

我使用記事本,並通過命令提示符的jdk - 我不想使用NetBeans或在此刻黯然失色。另外,我從來沒有使用枚舉之前或Java!所以,請與我裸...

哦,是的,我在下面這個網站:link

我周圍的一派,我真的無法找到爲什麼這個問題正在發生或如何通過搜索來解決它爲錯誤...

+1

Thos值是枚舉序號的默認值。你可以刪除它們,並使用ordinal()來獲得相同的值。 – 2012-01-12 13:22:10

+0

嗯,是的,我沒有讀過......我實際上不想從0開始(雖然我只是測試它),我想從1開始,但是謝謝:) – BigBug 2012-01-12 13:26:49

+1

你可以在你得到他們.........好吧,我在開玩笑:P – everton 2012-01-12 13:29:05

回答

13

您需要添加一個構造函數的枚舉。

public enum Status { 
    STATUS_OPEN(0), 
    STATUS_STARTED(1), 
    STATUS_INPROGRESS(2), 
    STATUS_ONHOLD(3), 
    STATUS_COMPLETED(4), 
    STATUS_CLOSED(5); 

    private final int number; 
    Status(int number) { 
     this.number = number; 
    } 

    public int getMagicNumber() { return number; } 
} 

這會修復你的語法問題,但是你希望用這個數字來達到什麼目的?通常使用枚舉而不是數字。

+0

至少吸氣劑檢查外面的數字。 – 2012-01-12 13:20:21

+0

@彼得,好點! – 2012-01-12 13:21:30

+0

好的。儘管如此,我仍然得到了很多錯它說構造函數在枚舉中的狀態不能應用於給定類型STATUS_OPEN(0)等...每個人都有相同的錯誤... – BigBug 2012-01-12 13:22:54

2

您需要declarestatus instance variableconstructor。像這樣

public enum Status 
{ 
     STATUS_OPEN(0), 
     STATUS_STARTED(1), 
     STATUS_INPROGRESS(2), 
     STATUS_ONHOLD(3), 
     STATUS_COMPLETED(4), 
     STATUS_CLOSED(5); 

     private int status; 

     private Status(int status){ 
     this.status = status; 
     } 

    public int getStatus(){ 
     return this.status; 
     } 
} 
+0

這是沒用的沒有吸氣 – everton 2012-01-12 13:21:46

+0

我認爲OP可以包括:P,無論如何,我已經包括了。 – 2012-01-12 14:15:05