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

我有这个Enum

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.female返回的arrayGender.getSortedValues()枚举的索引。

我想我必须使用gender变量来获取其Gender表示形式,换句话说,就是要获取一个以Gender.female为值的枚举变量。然后,使用该枚举变量在Gender.getSortedValues()上搜索。但我不知道如何使用其值获取枚举。

我怎样才能做到这一点?

最佳答案

如果您的整数是此枚举的gender成员,则应向枚举添加静态方法:

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()的信息。 Javadoc for Enum



最后说明:命名您的int gender令人困惑。

07-24 09:47
查看更多