我需要使用像這樣的WEATHER.SUNNY這樣的dota符號枚舉枚舉,因爲它們表示使用通配符的主題。我知道這是不可能的,因爲枚舉需要是有效的標識符。Java - 用點符號創建枚舉
here有人建議覆蓋toString mehtod,但我真的不明白這是什麼意思。 但是,它仍然有可能這樣做嗎?
我需要使用像這樣的WEATHER.SUNNY這樣的dota符號枚舉枚舉,因爲它們表示使用通配符的主題。我知道這是不可能的,因爲枚舉需要是有效的標識符。Java - 用點符號創建枚舉
here有人建議覆蓋toString mehtod,但我真的不明白這是什麼意思。 但是,它仍然有可能這樣做嗎?
你絕對可以做什麼@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()
。
示例代碼,顯示壓倒一切的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
定義具有大寫名稱的枚舉沒有問題。 這與Java命名約定不一致,但它起作用。
enum WEATHER {
SUNNY, CLOUDY;
}
然後你會使用這樣的:
WEATHER weather = WEATHER.SUNNY
感謝這個appraoch其工作的罰款。但我不確定如何將它應用於更復雜的結構。想象一下這樣的事情:WEATHER.SUMMER.SUNNY.DRYHUMIDITY –
那裏有一個隱含的層次嗎?每個物體都會有這些類別中的每一個嗎?它們應該與一個Topic類的字段是不同的枚舉嗎?你可以存儲一個集? Sorta取決於你要做什麼? –
EvanM
對不起,我是不安全的。點實際上意味着層次順序,並將導致樹結構。用Strings做這件事顯然是沒有問題的,但是再次用枚舉,我真的不知道如何實現更復雜的結構。 –