文字列値があり、文字列の配列と範囲を含む列挙型もあります。配列内の文字列のインデックスを取得するには、指定された値から次のように書きます。
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;
}
...
}
私はあなたを正しく理解しているかどうかはわかりませんが、おそらくあなたは探しています
_YourEnum.valueOf("VALUE").ordinal();
_
YourEnum.valueOf("VALUE")
は、VALUE
という名前の列挙値を返しますordinal()
メソッドを使用して確認できる位置(ゼロからインデックス付けされた)を知っています。私はあなたの質問を理解していないかもしれませんが、同じコードは列挙型でも動作します:
int index = Arrays.asList(YourEnum.values()).indexOf(YourEnum.ENUM_ITEM);
または以下を取得できます:
int index = YourEnum.valueOf("ENUM_ITEM").ordinal();
この簡単な解決策を試してください。
Fruit.values()[index]
インデックスを取得する場合は、序数を使用できます。特定の値を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());
}
次のロジックも機能します。
確認したいが、フルーツ名がすでにforループを使用していないことがわかっている場合は、Pshemoで言及されているアプローチを使用してください
for (Fruit aFruit : aFruits)
if (aFruit.name().equals(aName))
return aFruit.ordinal();