我正在尋找方法來實現和訪問我的枚舉,並且我對代碼的外觀不是很滿意。這似乎是一種修補方式。因此,這裏是我想要做的事:以乾淨的方式使用<key, value>枚舉
考慮這個簡單枚舉作爲什麼,我試圖做一個例子:
public enum MyEnum {
FIRST(0L), SECOND(1L), THIRD(2L);
private Long number;
private MyEnum(Long number){
this.number= id;
}
public static boolean isFirst(MyEnum type) {
return type == FIRST;
}
public static boolean isSecond(MyEnum type) {
return type == SECOND;
}
public static boolean isThird(MyEnum type) {
return type == THIRD;
}
public Long getId() {
return number;
}
}
後來,我有一些對象我設置爲Long.valueOf(1L),並使用此枚舉比較
Long.valueOf(1L).equals(instanceOfMyEnum.getId())
我真的很討厭有遍佈我的代碼,這些硬編碼的常數這樣我在想,如果這是一個壞的做法是使用這樣的事情,而不是:
eMyEnum.FIRST.getId().equals(instanceOfMyEnum.getId())
或
someLongThatIPassAsParameter = eMyEnum.FIRST.getId();
這些只是一些簡單的例子,但基本上它是一遍又一遍地重複同樣的問題。你怎麼看?
我不明白爲什麼'isAnalog()'和'isUsb()'方法......他們爲什麼要檢查'SECOND'和'THIRD'?或者,也許這只是任意的......我希望在你的程序中不是這樣。 –
爲什麼不創建方法來接受枚舉類型並返回任何你想要的? – Omoro
謝謝Yanick!這是因爲我爲了簡單而改變了枚舉類型,這些方法來自原始代碼,無意中留在那裏。我編輯它並立即修復。 –