我正在开发一个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
返回的array
中Gender.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
令人困惑。