从字符串中获取枚举的索引?

时间:2013-03-15 15:52:48

标签: java android enums

我有一个字符串值,我也有一个字符串数组和一个包含该范围的枚举。 要获取数组中字符串的索引,请从提供的值中写下:

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;
   }
   ...
}

5 个答案:

答案 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();