33

私は文字列値を持っています。また、文字列の配列と範囲を含む列挙型もあります。配列内の文字列のインデックスを取得するには、指定された値から次のように記述します。

Arrays.asList(myClass.BAUD_RATES).indexOf(username)

列挙型に対してこれを行うにはどうすればよいですか? 序数を使用できますか? または、独自の方法を作成する必要がありますか?

メソッドは次のようになります。

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

5 に答える 5

113

私があなたを正しく理解しているかどうかはわかりませんが、あなたが探しているかもしれない質問のタイトルに基づいています

YourEnum.valueOf("VALUE").ordinal();
  1. YourEnum.valueOf("VALUE")名前付きの列挙値を返します"VALUE"
  2. 各列挙は、メソッドを呼び出すことで取得できるその位置 (ゼロからインデックス付け) を知ってordinal()います。
于 2013-03-15T15:56:50.527 に答える
14

I might not understand you question, but the same code works for enums too:

int index = Arrays.asList(YourEnum.values()).indexOf(YourEnum.ENUM_ITEM);

Or you can get:

int index = YourEnum.valueOf("ENUM_ITEM").ordinal();
于 2013-03-15T15:57:48.200 に答える
2

インデックスを取得する場合は、序数を使用できます。Stringに特定の値を割り当てたい場合は、それを取得するための独自のメソッドを定義できます。

 enum DAY
 {
  MONDAY(10),
  TUESDAY(20);
  int value;
  DAY(int x)
  {
   this.value = x;
  }
  public int getValue()
  {
    return value;
   }

これで、値と序数を次のように取得できます。

    for(DAY s : DAY.values() )
    {
        System.out.println(s.ordinal());
        System.out.println(s.getValue());
    }
于 2013-03-15T16:02:28.483 に答える