web-dev-qa-db-fra.com

Obtention de la valeur String d'énum en Java

J'ai un enum défini comme ceci et j'aimerais pouvoir obtenir les chaînes pour les statuts individuels. Comment devrais-je écrire une telle méthode?

Je peux obtenir les valeurs int des statuts mais souhaiterais pouvoir également obtenir les valeurs de chaîne des ints.

public enum Status {
    PAUSE(0),
    START(1),
    STOP(2);

    private final int value;

    private Status(int value) {
        this.value = value
    }

    public int getValue() {
        return value;
    }
}
61
Mozbi

si status est de type Status enum, status.name() vous donnera son nom défini.

92
harsh

Vous pouvez utiliser la méthode values():

Par exemple, Status.values()[0] retournera PAUSE dans votre cas. Si vous l'imprimez, toString() sera appelé et "PAUSE" sera imprimé.

47
Juvanis

Utiliser le nom de méthode par défaut () comme indiqué ci-dessous

public enum Category {
        ONE("one"),
        TWO ("two"),
        THREE("three");

        private final String name;

        Category(String s) {
            name = s;
        }

    }

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println(Category.ONE.name());
    }
}
11

Vous pouvez ajouter cette méthode à votre énumération de statut:

 public static String getStringValueFromInt(int i) {
     for (Status status : Status.values()) {
         if (status.getValue() == i) {
             return status.toString();
         }
     }
     // throw an IllegalArgumentException or return null
     throw new IllegalArgumentException("the given number doesn't match any Status.");
 }

public static void main(String[] args) {
    System.out.println(Status.getStringValueFromInt(1)); // OUTPUT: START
}
6
M. Abbas

Je crois qu’enum a un .name () dans son API, assez simple à utiliser comme dans cet exemple:

private int security;
public String security(){ return Security.values()[security].name(); }
public void setSecurity(int security){ this.security = security; }

    private enum Security {
            low,
            high
    }

Avec cela, vous pouvez simplement appeler 

yourObject.security() 

et retourne haut/bas sous forme de chaîne, dans cet exemple

0
Joao Cesar Stange