作为枚举的非序数INT 请考虑下面的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); } } 公共枚举载体{ 默认值(0), 卡里翁(1), 第二(2)条, CarrierHoknows(102312); 私有最终整数值; 私有静态最终映射carrierMap=newhashmap(); 静止的{ 对于(载体类型:carrier.values()){ carrierMap.put(type.value,type); } } 私人承运人(国际价值){ 这个值=值; } 公共静态int getIntValue(int值){ 返回值; } 公共静态载体getStringValue(int值){ 返回carrierMap.get(值); } }

作为枚举的非序数INT 请考虑下面的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); } } 公共枚举载体{ 默认值(0), 卡里翁(1), 第二(2)条, CarrierHoknows(102312); 私有最终整数值; 私有静态最终映射carrierMap=newhashmap(); 静止的{ 对于(载体类型:carrier.values()){ carrierMap.put(type.value,type); } } 私人承运人(国际价值){ 这个值=值; } 公共静态int getIntValue(int值){ 返回值; } 公共静态载体getStringValue(int值){ 返回carrierMap.get(值); } },java,enums,Java,Enums,我需要的是getIntValue按原样返回值 (即102312)然而,作为一个枚举而不是一个整数,有可能吗 将int值102312强制转换为枚举。 请注意,我不是指序数(我们不使用它), 或在getStringValue中正确返回的字符串值。 我指的是将值102312作为枚举而不是int返回 提前感谢, 尼克。如果我理解您的意思,您只需要通过它的int值获取enum成员 public static carrier getStringValue(int value) { for(carri

我需要的是getIntValue按原样返回值 (即102312)然而,作为一个枚举而不是一个整数,有可能吗 将int值102312强制转换为枚举。 请注意,我不是指序数(我们不使用它), 或在
getStringValue
中正确返回的字符串值。 我指的是将值102312作为枚举而不是int返回

提前感谢,


尼克。

如果我理解您的意思,您只需要通过它的int值获取enum成员

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;
}

不,这是不可能的。你为什么要这样做?从我所能告诉你的,getStringValue做的正是你想让getIntValue做的。请澄清。在任何情况下,枚举既不是字符串也不是整数;不能从int强制转换为任何类(自动装箱转换为整数除外),因为int不是类。为什么在
getIntValue(int值)
中返回传入的
值?它到底应该做什么?最后,
getStringValue
不会返回
String
。您的问题毫无意义。如果您尝试调用方法,则已经拥有枚举。考虑以下常用java命名约定,类名从大写开始:<代码>公共EnUM运载工具< /代码>。使其他人更容易阅读您的代码。为便于理解,应将
getStringValue
命名为
getByValue