Java - 使用点表示法创建枚举

时间:2017-10-11 10:40:00

标签: java identifier enumerators

我需要像这样的WEATHER.SUNNY这样的点符号枚举,因为它们代表使用通配符的主题。我知道这是不可能的,因为枚举需要是有效的标识符。

here有人建议覆盖toString方法,但我真的不知道这是怎么回事。 但是,它仍然可以这样做吗?

3 个答案:

答案 0 :(得分:2)

你绝对可以做@Stefan建议的内容,但这可能是一个很好的用例,可以将字段附加到你的枚举值:

public enum Topic {
    SUNNY("WEATHER.SUNNY"), CLOUDY("WEATHER.CLOUD"), ...

    String notation;

    Topic(String notation) {
        this.notation = notation;
    }

    public String getNotation() { return notation; }
}

然后你可以调用Topic.SUNNY.getNotation()

答案 1 :(得分:0)

示例代码,显示覆盖toString的想法:

public class Test {

enum Weather { Sunny, Cloudy;

    @Override
    public String toString() {
        return "WEATHER." + super.toString().toUpperCase();
    }

};

public static void main(String[] args) {
    System.out.println(Weather.Sunny);
}
}

输出:WEATHER.SUNNY

答案 2 :(得分:0)

定义具有大写名称的枚举没有问题。 它与Java命名约定不一致,但它有效。

enum WEATHER {
    SUNNY, CLOUDY;
}

然后你会这样使用:

WEATHER weather = WEATHER.SUNNY