Получение строкового значения из enum в Java


У меня есть перечисление, определенное так, и я хотел бы иметь возможность получить строки для отдельных статусов. Как я должен написать такой метод?

Я могу получить int значения статусов, но хотел бы вариант получения строковых значений из 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;
    }
}
5 58

5 ответов:

Если status типа Status перечисление, status.name() даст вам свое определенное имя.

можно использовать values() способ:

например Status.values()[0] вернет паузу в вашем случае, если вы ее напечатаете,toString() будет вызван и" пауза " будет напечатан.

используйте имя метода по умолчанию () как заданный сильфон

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());
    }
}

вы можете добавить этот метод в свой статус перечисления:

 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
}

Я считаю, что enum имеют .name () в своем API, довольно прост в использовании, как в этом примере:

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

    private enum Security {
            low,
            high
    }

С этим вы можете просто позвонить

yourObject.security() 

и он возвращает high / low как String, в этом примере