是的,你應該能夠在Java中使用枚舉在switch
聲明:
public enum SomeEnum { FOO, BAR, BAZ };
// in a class...
private void something(SomeEnum s) {
switch (s) {
case FOO:
// do something
break;
case BAR:
// do something else
break;
}
}
不知道我理解價值觀是如何INT扎入這一點,但你可以像一個枚舉字段/方法在一個普通的Java類中,並且可以使用它們來保存任何其他POJO中的int(或任何其他類型)值。
下面是一個例子,我們爲一個枚舉類聲明一個構造函數,以便您可以在構造枚舉的每個實例時傳入內部變量的值。爲了幫助您瞭解正在發生的事情:首先我們在枚舉中聲明這些項 - 每個聲明調用構造函數,所以我們可以在這裏傳入實例變量。然後,像普通的Java類那樣,enum類的代碼如下所示。
public enum AnotherEnum {
ONE(1, "un"), TWO(2, "deux"), THREE(3, "trois"), FIFTY_SEVEN(57, "cinquante-sept");
private final int someInt;
private final String french;
private AnotherEnum(int i, String s) {
this.someInt = i;
this.french = s;
}
public int getSomeInt() {
return this.someInt;
}
public String getFrench() {
return this.french;
}
}
因此,例如,System.out.println(AnotherEnum.TWO.getSomeInt())
將打印2
和System.out.println(AnotherEnum.FIFTY_SEVEN.getFrench())
將打印cinquante-sept
。
enum.X並不意味着什麼。雖然枚舉只是被抽象出來的整數。 test1 = 0,test2 = 1,test3 = 2。您可以互換使用枚舉和它們的整數表示。 –
這在C#中是正確的,但不是在Java中! – pobrelkey
不,他們不是。它們是實例具有關聯的int(枚舉的序數)的類。你可以在它們上定義方法,創建非默認構造函數等。 – yshavit