首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为枚举的非序数INT

作为枚举的非序数INT
EN

Stack Overflow用户
提问于 2013-12-15 11:36:04
回答 1查看 83关注 0票数 0

请考虑以下java枚举:

代码语言:javascript
复制
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。

提前谢谢你,

尼克。

EN

回答 1

Stack Overflow用户

发布于 2013-12-15 16:03:24

如果我很好地理解你,你只是想通过它的int值来获取枚举成员。

代码语言:javascript
复制
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值

代码语言:javascript
复制
public static int getIntValue(carrier c) {
   if(c == null) throw new IllegalArgumentException("Got null, expected carrier");     
   return c.value;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20590929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档