java枚举类常见操作
public enum Status {
OK(0, "成功"),
ERROR_A(100, "错误A"),
ERROR_B(200, "错误B");
Status(int number, String description) {
this.code = number;
this.description = description;
}
private final int code;
private final String description;
public int getCode() {
return code;
}
public String getDescription() {
return description;
}
/**
* 根据code查找Description
* @param key
* @return
*/
public static String getValue(int key) {
String value = "";
for (Status e : Status.values()) {
if (e.code == key) {
value = e.getDescription();
break;
}
}
return value;
}
/**
* 判断Status里是否有此code
* @param key
* @return
*/
public static boolean isInclude(int key) {
boolean include = false;
for (Status e : Status.values()) {
if (e.code == key) {
include = true;
break;
}
}
return include;
}
/**
* 判断该枚举中是否含有传入的值
* @param test
* @return
*/
public static boolean isContains(String test) {
boolean contains = false;
for (Status c : Status.values()) {
if (c.name().equals(test)) {
contains = true;
break;
}
}
return contains;
}
/**
* 获取所有的Description
* @return
*/
public static String[] getValue() {
String[] arr = new String[Status.values().length];
int i = 0;
for (Status s : Status.values()) {
arr[i] = s.getDescription();
i++;
}
return arr;
}
}
测试
System.out.println(Status.getde(0));//查找Status枚举中code是0的description的值。输出:成功
System.out.println(Status.valueOf("OK").getCode());//查找Status枚举中OK的code。输出:0
System.out.println(Status.valueOf("OK").getDescription());//查找Status枚举中OK的description。输出:成功
System.out.println(Status.OK); //输出:OK
System.out.println(Status.OK.getCode()); //输出:0
System.out.println(Status.OK.getDescription()); //输出:成功
System.out.println(Arrays.asList(Status.getde()));//输出:[成功, 错误A, 错误B]
String event1 = "aaa";
String event2 = "ERROR_B";
System.out.println(Status.contains(event1));//false。因为Status中不含有aaa
System.out.println(Status.contains(event2));//true。因为Status中含有ERROR_B