[英]Add slash to an enumeration in Java
我需要創建一個這樣的enumeration
:
public enum STYLE {
ELEMENT1(0), A/R (2)
//Staff
};
但Java
不允許這樣做。 有什么解決方案嗎? 謝謝
您不能使用/
來命名Java標識符。 您可以查看§JLS3.8 ,了解在Java標識符命名中允許使用的所有特殊字符。
對於您的場景,您可以使用看起來像這樣的枚舉。
enum STYLE {
ELEMENT1(0, "ELEMENT1"), A_R(2, "A/R");
private int code;
private String name;
private STYLE(int code, String name) {
this.code = code;
this.name = name;
}
// Other methods.
}
/
不能在名稱中使用。 如果您的A/R
常量表示“A或R”,則可以將其重命名為A_OR_R
。
編輯 :
如果需要將其與等於"A/R"
的String進行比較,則可以覆蓋常量中的toString()
方法。
public enum Style {
A_OR_R(2) {
public @Override String toString() {
return "A/R";
}
}, ELEMENT1(0);
}
然后
String test = "A/R";
boolean isEqual = test.equals(style.A_OR_R.toString());
java中的枚舉只是一個編譯時的語法糖。 實際上, enum
只是一個類, enum
成員就像這個類的public final static
字段一樣。 每個字段的名稱必須遵循某些規則。 例如,name不能包含表示該語言中特殊內容的特殊字符。 例如/
不能用作名稱的一部分。
如果需要,可以將其命名為A_R
。
但是,如果您希望另外能夠從枚舉成員A_R
提取字符串A/R
,則可以定義返回它的方法,例如
public enum STYLE {
ELEMENT1(0),
A_R (2) {
@Override
public String printableName() {
return "A_R";
}
};
public String printableName() {
return name();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.