簡體   English   中英

在Java中將斜杠添加到枚舉中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM