Подтвердить что ты не робот

Получение значения String из 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;
    }
}
4b9b3361

Ответ 1

Вы можете использовать метод values():

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

 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
}

Ответ 5

Я верю, что перечисление имеет API.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, в этом примере