请考虑以下java枚举:
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值102312转换为枚举。请注意,我不是指序数(我们不使用序数),也不是指在getStringValue中正确返回的字符串值。我指的是返回值102312作为枚举而不是int。
提前谢谢你,
尼克。
发布于 2013-12-15 16:03:24
如果我很好地理解你,你只是想通过它的int值来获取枚举成员。
public static carrier getStringValue(int value) {
for(carrier c : carrier .values()){
if(c.value == value) return c;
}
throw new IllegalArgumentException("Got illegal value");
}请检查您的代码,使其更具可读性。更改方法名称,重命名枚举名称(必须是载体),考虑getIntValue方法签名和实现。看起来它应该与getStringValue相反,并返回枚举成员的int值
public static int getIntValue(carrier c) {
if(c == null) throw new IllegalArgumentException("Got null, expected carrier");
return c.value;
}https://stackoverflow.com/questions/20590929
复制相似问题