从Java中的枚举中获取string值
我有一个像这样定义的枚举,我希望能够获得单个状态的string。 我应该如何写这样的方法?
我可以得到状态的int值,但是也希望从int获取string值的选项。
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
枚举types, status.name()
会给你定义的名字。
使用默认方法name()作为给定的波纹pipe
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在它的API中有一个.name(),很简单,就像这个例子一样:
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()
在这个例子中它返回高/低string