Java - 使用点符号创建枚举
Java - create enums with dot notation
我需要像这样 WEATHER.SUNNY 这样带有点符号的枚举,因为它们使用通配符表示主题。我知道这是不可能的,因为枚举需要是有效的标识符。
here 有人建议覆盖 toString 方法,但我真的不明白那是什么意思。
但是,是否仍然可以这样做?
显示覆盖 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
您绝对可以按照@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()
.
定义名称大写的枚举没有问题。
它与 Java 命名约定不一致,但它有效。
enum WEATHER {
SUNNY, CLOUDY;
}
那么你可以这样使用:
WEATHER weather = WEATHER.SUNNY
我需要像这样 WEATHER.SUNNY 这样带有点符号的枚举,因为它们使用通配符表示主题。我知道这是不可能的,因为枚举需要是有效的标识符。
here 有人建议覆盖 toString 方法,但我真的不明白那是什么意思。 但是,是否仍然可以这样做?
显示覆盖 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
您绝对可以按照@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()
.
定义名称大写的枚举没有问题。 它与 Java 命名约定不一致,但它有效。
enum WEATHER {
SUNNY, CLOUDY;
}
那么你可以这样使用:
WEATHER weather = WEATHER.SUNNY