在Java中向枚举添加斜杠
我需要创建一个在Java中向枚举添加斜杠,java,enums,enumeration,slash,Java,Enums,Enumeration,Slash,我需要创建一个枚举,如下所示: public enum STYLE { ELEMENT1(0), A/R (2) //Staff }; 但是Java不允许这样做。有什么解决办法吗? 谢谢/不能在名称中使用。如果A/R常量表示“A或R”,则可以将其重命名为A\u或\u R 编辑: 如果需要将其与等于“a/R”的字符串进行比较,可以重写常量中的toString()方法 public enum Style { A_OR_R(2) { public @Override Stri
枚举
,如下所示:
public enum STYLE {
ELEMENT1(0), A/R (2)
//Staff
};
但是Java
不允许这样做。有什么解决办法吗?
谢谢
/
不能在名称中使用。如果A/R
常量表示“A或R”,则可以将其重命名为A\u或\u R
编辑:
如果需要将其与等于“a/R”
的字符串进行比较,可以重写常量中的toString()
方法
public enum Style {
A_OR_R(2) {
public @Override String toString() {
return "A/R";
}
}, ELEMENT1(0);
}
然后
不能使用
/
命名Java标识符。您可以查看,以了解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.
}
java中的枚举只是编译时语法糖。实际上,
enum
只是一个类,enum
成员就是这个类的public final static
字段。每个字段都有必须遵循某些规则的名称。例如,名称不能包含表示语言中特殊内容的特殊字符。例如,/
不能用作名称的一部分
如果你愿意,你可以叫它A\R
然而,如果您希望能够从枚举成员A\u R
中提取字符串A/R
,您可以定义返回该字符串的方法,例如
public enum STYLE {
ELEMENT1(0),
A_R (2) {
@Override
public String printableName() {
return "A_R";
}
};
public String printableName() {
return name();
}
}
不可以。您不能使用
/
作为名称的一部分。对您来说,最好的解决方案是,使用ASlashR:)而不是A/R:)我需要将它与可能等于“A/R”的字符串进行比较。您可以覆盖constantIn中的toString()
方法。事实上,我在代码valueOf()中使用它来检查我是否有“A/R”这是一个已经定义的字符串为什么不直接重写toString()
?它已经默认为name()
,旨在提供一个“printableName”。顺便说一下,您的方法仍然返回“A\u R”
,而不是“A/R”
。
public enum STYLE {
ELEMENT1(0),
A_R (2) {
@Override
public String printableName() {
return "A_R";
}
};
public String printableName() {
return name();
}
}