J'ai une valeur de chaîne, j'ai aussi un tableau de chaînes et une énumération contenant la plage également . Pour obtenir l'index de la chaîne dans le tableau, j'écris ceci à partir de la valeur fournie
Arrays.asList(myClass.BAUD_RATES).indexOf(username)
Comment est-ce que je fais ceci pour un enum? Puis-je utiliser l'ordinal? Ou dois-je créer ma propre méthode?
La méthode pourrait ressembler à:
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;
}
...
}
Je ne suis pas sûr de bien vous comprendre, mais vous recherchez peut-être
YourEnum.valueOf("VALUE").ordinal();
YourEnum.valueOf("VALUE")
renvoie la valeur enum avec le nom VALUE
ordinal()
.Je peux ne pas comprendre votre question, mais le même code fonctionne aussi pour les enums:
int index = Arrays.asList(YourEnum.values()).indexOf(YourEnum.ENUM_ITEM);
Ou vous pouvez obtenir:
int index = YourEnum.valueOf("ENUM_ITEM").ordinal();
Essayez cette solution simple:
Fruit.values()[index]
Si vous voulez récupérer l'index, vous pouvez utiliser ordinal. Si vous souhaitez attribuer une valeur spécifique à String, vous pouvez définir votre propre méthode pour la récupérer.
enum DAY
{
MONDAY(10),
TUESDAY(20);
int value;
DAY(int x)
{
this.value = x;
}
public int getValue()
{
return value;
}
La valeur et l'ordinal peuvent maintenant être récupérés sous la forme:
for(DAY s : DAY.values() )
{
System.out.println(s.ordinal());
System.out.println(s.getValue());
}
La logique suivante fonctionnera également.
Si vous voulez vérifier et que vous connaissez déjà le nom du fruit, n'utilisez pas cette boucle, utilisez l'approche indiquée par Pshemo
for (Fruit aFruit : aFruits)
if (aFruit.name().equals(aName))
return aFruit.ordinal();