我正在寻找方法来实现和访问我的枚举,并且我对代码的外观不是很满意。这似乎是一种修补方式。因此,这里是我想要做的事:以干净的方式使用<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!这是因为我为了简单而改变了枚举类型,这些方法来自原始代码,无意中留在那里。我编辑它并立即修复。 –