2014-10-04 41 views
0

我有枚舉,例如:與構造枚舉和開關JAVA使用它

public enum Type { 
    Type1(10), 
    Type2(25), 
    Type3(110); 

    private final int value; 

    Type(int value) { 
     this.value = value; 
    } 

    public int getValue() { 
     return value; 
    } 
} 

而且我想在交換機枚舉使用它:

switch (indexSector) { 
    case Type.Type2.getValue(): 
    //... 
    break; 
} 

但IDE說需要「常量表達式」。我如何在交換機中使用Enum這種類型?

回答

1

您可以在開關中使用枚舉,但您的案例必須是枚舉本身的項目,而不是方法的返回值。

Type x = ... 

switch (x) { 
    case Type1: ... 
     break; 
    case Type2: ... 
     break; 
    case Type3: ... 
     break; 
} 
+0

謝謝,我明白了。 – Handy 2014-10-04 09:47:02

2
Type indexSector = ...; 
int value = indexSector.getValue(); 
switch (indexSector) { 
    case Type2: 
     // you can use the int from the value variable 
     //... 
    break; 
} 
+1

謝謝你,我明白了。它是有效的,但沒有「Type.Type2:」,只有「Type2:」。 – Handy 2014-10-04 09:46:44

0
Type indexType = ... 
switch (indexType) { 
    case Type.Type1: 
    //... 
    break; 
    case Type.Type2: 
     int indexValue = indexType.getValue(); 
    //... 
    break; 
    case Type.Type3: 
    //... 
    break; 
    default: 
    break; 
} 
+1

您不能在枚舉上使用'new'。 – khelwood 2014-10-04 09:34:33

+0

不,實際上你不行。在您提供的文章中,他們不使用new關鍵字創建枚舉實例 - 他們創建了名爲EnumTest的包裝類實例。 OFc,枚舉可以有構造函數,但仍然無法使用新實例化實例。 – 2014-10-04 09:47:10

+0

是的你是對的。所以我糾正了我的答案 – 2014-10-04 10:05:11