我應該從一個變量枚舉它的值並將其轉換爲string.how可以嗎?取enum的值並將其轉換爲字符串
在這裏它是類型枚舉:
public enum State{
b,c,p;
};
現在我要插入的對象的字符串的一個值。
我應該從一個變量枚舉它的值並將其轉換爲string.how可以嗎?取enum的值並將其轉換爲字符串
在這裏它是類型枚舉:
public enum State{
b,c,p;
};
現在我要插入的對象的字符串的一個值。
您可以使用enum.name
或enum.toString
來獲取枚舉常量的名稱,或使用enum.ordinal
來獲取序號位置。
你可以使用名稱()或toString()方法,所以:
State aState = State.c;
String strState = aState.name();
見here更多信息,官方Java參考...
State.b.toString()
將返回"b"
。其他人也一樣。
通常,
State state = ...;
String string = state.toString();
應該工作,但不推薦,因爲有人可能會覆蓋toString
用於其他目的。
相反,你要尋找的方法是
String string = state.name();
順便說一句,你列舉規定應始終都在首都,他們應該有描述性的名字。這不是一種語言規則,而是一種慣例。例如enum State { ON, OFF, PAUSED; }
。
方法1:使用內置的toString()
和name()
方法
如果你要打印String
是一樣的State
的價值,那麼你可以使用toString()
方法,或方法。
System.out.println(State.b); // Prints "b"
System.out.println(State.c); // Prints "c"
System.out.println(State.p); // Prints "p"
方法2:使用構造函數來創建一個自定義映射
如果你想與上述兩個國家的相關自定義String
,你可以用一個構造函數爲特定值相關聯每個enum
值:
public enum State{
b("State B"), c("State C"), p("State P");
private String longName;
private State(String longName) {
this.longName = longName;
}
@Override
public String toString() {
return this.longName;
}
};
當然,如果你不想打破默認toString()
使用情況,您可以創建一個不同的方法稱爲例如,返回自定義值。
只有一個'@Override public String toString {return「State」+ name()。toUpperCase(); }',你可以在聲明'a,c,p;'之後放置它。 – toto2
你說的沒錯,但是我使用'State B'等作爲示例字符串。例如,有人可能想將'b'映射到''Banana''和'c''''' Coconut'',在這種情況下,沒有堅實而快速的方法來實現'toString()'邏輯。 –
我傾向於做更復雜的東西,但我覺得它更靈活:
public enum MyEnumeration {
SOME_NAME("Some Name"),
OTHER_THING("Other Thing"),
...
MORE_VALUES("More Values"),
private final String displayName;
private MyEnumeration(String displayName) {
this.displayName = displayName;
}
public String getDisplayName() {
return displayName;
}
}
這樣一來,我採用規範的爲我的代碼枚舉,但可以對他們有一個更像樣的名字。 這個技巧也可以用來代替序數,通過初始化一個數字,然後你不必擔心重新排列你的枚舉。
enum有辦法做到這一點。你會想檢查API。 –
我還沒找到它,我發現值() – Mazzy