2015-10-07 38 views
2

我正試圖將一個非常簡單的應用程序從C移植到Java。 可惜之前,所以下面的代碼混淆了我,我沒有工作了很多與枚舉:如何將枚舉與從C分配的值連接到Java?

typedef enum { 
    LT = 0, 
    LTE = 1, 
    E = 2, 
    GTE = 3, 
    GT = 4 
} S; 

從我的理解的數字是代表每一個枚舉值。

我怎麼能在Java中做同樣的事情?

我應該採取這種方法

private enum S{ 
    LT, 
    LTE, 
    E, 
    GTE, 
    GT 
} 

這種做法?

private enum S{ 
    LT(0), 
    LTE(1), 
    E(2), 
    GTE(3), 
    GT(4);  

    private int code; 

    S(int code) { 
     this.code = code; 
    } 
    public int getCode() { 
     return code; 
    } 
} 

如果Java中的枚舉已經從0開始,那麼添加第二種方法會有點多餘。我很困惑...

+0

C和C++和C#中的枚舉也從0開始。 – chris

回答

0

你應該這樣做的第一種方法。 Java中的enum常量的優點是它們不是而是int值,因此您不需要以這種方式爲它們分配值。

如果由於某種原因您需要知道enum常數的指數(這很少見),那麼您仍然可以使用LT.ordinal()