从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”将被打印。

如果statusStatus枚举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