请考虑以下java enum:
public enum carrier {
Default(0),
CarrierOne(1),
CarrierTwo(2),
CarrierWhoKnows(102312);
private final int value;
private static final Map<Integer, carrier> carrierMap = new HashMap<Integer, carrier>();
static {
for (carrier type : carrier.values()) {
carrierMap.put(type.value, type);
}
}
private carrier(int value) {
this.value = value;
}
public static int getIntValue(int value) {
return value;
}
public static carrier getStringValue(int value) {
return carrierMap.get(value);
}
}
我需要的是让getIntValue像这样返回值
(即,102312)然而,作为枚举而不是int。可能吗
将int值102312转换为枚举。
请注意,我不是指顺序(我们不使用它),
或者getStringValue
中正确返回的字符串值。
我指的是将值102312作为枚举而不是int返回。
先谢谢,
尼克。
答案 0 :(得分:1)
如果我理解你,你只想通过它获得enum成员的值。
public static carrier getStringValue(int value) {
for(carrier c : carrier .values()){
if(c.value == value) return c;
}
throw new IllegalArgumentException("Got illegal value");
}
请检查您的代码是否更具可读性。更改方法名称,重命名枚举名称(必须是Carrier),考虑getIntValue
方法签名和实现。看起来它应该与getStringValue
相反并返回枚举成员的int值
public static int getIntValue(carrier c) {
if(c == null) throw new IllegalArgumentException("Got null, expected carrier");
return c.value;
}