Получение строкового значения из 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 ответов:
можно использовать
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, в этом примере