Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中向枚举添加斜杠_Java_Enums_Enumeration_Slash - Fatal编程技术网

在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();
    } 
}