Ответ 1
Вы можете использовать метод values()
:
Например, Status.values()[0]
вернет PAUSE в вашем случае, если вы его распечатаете, будет вызываться toString()
и будет напечатано сообщение "PAUSE".
У меня есть перечисление, определенное как это, и я хотел бы иметь возможность получать строки для отдельных статусов. Как написать такой метод?
Я могу получить значения 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;
}
}
Вы можете использовать метод values()
:
Например, Status.values()[0]
вернет PAUSE в вашем случае, если вы его распечатаете, будет вызываться toString()
и будет напечатано сообщение "PAUSE".
если status
имеет тип status
enum, status.name()
даст вам свое определенное имя.
Использовать имя метода по умолчанию() как заданный сильфон
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
}
Я верю, что перечисление имеет 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, в этом примере