首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Enum值获取Enum

如何使用Enum值获取Enum
EN

Stack Overflow用户
提问于 2013-07-13 09:31:14
回答 2查看 295关注 0票数 0

我正在开发一个Android应用程序:

我有这个Enum

代码语言:javascript
复制
public enum Gender
{
    male (0, MyApplication.getAppContext().getString(R.string.male)),
    female (1, MyApplication.getAppContext().getString(R.string.female));

    private final int gender;
    private final String description;
    Gender(int aGender, String aDescription)
    {
        gender = aGender;
        description = aDescription;
    }

    public int getValue() { return gender; }

    @Override
    public String toString() { return description; }

    /**
     * Returns all values in this Enum sorted alphabetically by
     * description.
     * @return All values sorted.
     */
    public static Gender[] getSortedVaules()
    {
        Gender[] sorted = values();
        Arrays.sort(sorted, EnumByNameComparator.INSTANCE);
        return sorted;
    }
}

想象一下我有int gender = 1。在本例中,1是Gender.female的值。

我希望使用gender变量在由Gender.getSortedValues()返回的array中获取Gender.female枚举的索引。

我认为我必须使用gender变量来获得它的性别表示,换句话说,得到一个以Gender.female为值的枚举变量。然后,使用枚举变量在Gender.getSortedValues()上搜索。但我不知道如何利用它的价值来获得一个枚举。

,我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-13 09:38:03

如果您有一个整数,它是这个枚举的gender成员,您应该向枚举添加一个静态方法:

代码语言:javascript
复制
public static Gender getByInt(final int i)
{
    for (final Gender g: values())
        if (g.gender == i)
            return g;
    return null; // not found
}

然后,您将调用Gender.getByInt(...);

但是Enum也有.valueOf()Enum.valueOf(Gender.class, "male")Gender.valueOf("male");如果没有这样的值,请注意它抛出了一个IllegalArgumentException

还可以读到关于.ordinal()的文章。Enum

最后注意:命名您的int gender是令人困惑的。

票数 3
EN

Stack Overflow用户

发布于 2013-07-13 09:52:10

删除成员字段性别。您将在已经非常完善的序号类型中引入一个潜在的非唯一字段,这可能会导致后面的编程错误。

然后,当您必须在某个地方序列化枚举时,只需依赖于序号()方法。使用循环和标识比较进行查找(如fge所建议的)。

对于已排序的值,使用不可变的静态列表(或其他索引集合)代替数组,因为这样您就可以轻松地使用list.indexOf(myEnum),并且只需要排序一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17628840

复制
相关文章

相似问题

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