我有一个字符串值,我也有一个字符串数组和一个包含该范围的枚举。 要获取数组中字符串的索引,请从提供的值中写下:
Arrays.asList(myClass.BAUD_RATES).indexOf(username)
如何为enum执行此操作?我可以使用序数吗?或者我必须制作自己的方法吗?
方法可能如下:
public enum Fruit {
...
static public boolean isMember(String aName) {
Fruit[] aFruits = Fruit.values();
for (Fruit aFruit : aFruits)
if (aFruit.fruitname.equals(aName))
return aFruit;
return false;
}
...
}
答案 0 :(得分:73)
不确定我是否理解正确,但也许您正在寻找
YourEnum.valueOf("VALUE").ordinal();
YourEnum.valueOf("VALUE")
返回名称为VALUE
ordinal()
方法看到它。答案 1 :(得分:10)
我可能不理解你的问题,但同样的代码也适用于枚举:
int index = Arrays.asList(YourEnum.values()).indexOf(YourEnum.ENUM_ITEM);
或者你可以得到:
int index = YourEnum.valueOf("ENUM_ITEM").ordinal();
答案 2 :(得分:2)
如果要检索索引,可以使用序数。如果要为String指定一些特定值,可以定义自己的方法来检索它。
enum DAY
{
MONDAY(10),
TUESDAY(20);
int value;
DAY(int x)
{
this.value = x;
}
public int getValue()
{
return value;
}
现在可以检索value和ordinal:
for(DAY s : DAY.values() )
{
System.out.println(s.ordinal());
System.out.println(s.getValue());
}
答案 3 :(得分:2)
尝试这个简单的解决方案:
Fruit.values()[index]
答案 4 :(得分:0)
以下逻辑也可以。
如果您想检查并且您知道fruitname已经不使用for循环请使用Pshemo提到的方法
for (Fruit aFruit : aFruits)
if (aFruit.name().equals(aName))
return aFruit.ordinal();