枚举的名字就是枚举自己
public class EnumDemo {
public enum StatusEnum {
INIT,
SUCCESS,
FAIL,
;
}
public static void main(String[] args) {
System.out.println(StatusEnum.SUCCESS);
System.out.println(StatusEnum.SUCCESS.toString());
System.out.println(StatusEnum.SUCCESS.name());
}
}
运行后输出:
SUCCESS
SUCCESS
SUCCESS
使用 valueOf 将字符串转换为枚举
public class EnumDemo {
public enum StatusEnum {
INIT,
SUCCESS,
FAIL,
;
}
public static void main(String[] args) {
StatusEnum statusEnum = StatusEnum.valueOf("SUCCESS");
System.out.println(statusEnum);
}
}
运行后输出:
SUCCESS
如果根据字符串找不到对应的枚举,会抛出 java.lang.IllegalArgumentException
异常。
使用 values() 遍历枚举
public class EnumDemo {
public enum StatusEnum {
INIT,
SUCCESS,
FAIL,
;
}
public static void main(String[] args) {
for (StatusEnum status: StatusEnum.values()) {
System.out.println(status);
}
}
}
运行后输出:
INIT
SUCCESS
FAIL
使用 ordinal() 获取枚举序号
每个枚举都有一个 int 类型的序号,使用 ordinal() 可以获取。
示例:
public class EnumDemo {
public enum StatusEnum {
INIT,
SUCCESS,
FAIL,
;
}
public static void main(String[] args) {
for (StatusEnum status: StatusEnum.values()) {
System.out.printf("%s:%s\n", status.name(), status.ordinal());
}
}
}
运行后输出:
INIT:0
SUCCESS:1
FAIL:2
枚举可以实现接口
示例:
public class EnumDemo {
// 接口
public interface BaseEnum {
String getName();
}
// 枚举实现接口
public enum StatusEnum implements BaseEnum {
INIT,
SUCCESS,
FAIL,
;
@Override
public String getName() {
return name();
}
}
public static void main(String[] args) {
System.out.println(StatusEnum.SUCCESS.getName());
}
}
运行后输出:
SUCCESS
枚举判等
判断是否相等,用==
等于号判断即可。不同类型的枚举之间,不能用等于号判断是否相等。
public class EnumDemo {
public enum StatusEnum {
INIT,
SUCCESS,
FAIL,
;
}
public static void main(String[] args) {
System.out.println( StatusEnum.SUCCESS == StatusEnum.SUCCESS);
System.out.println( StatusEnum.valueOf("SUCCESS") == StatusEnum.valueOf("SUCCESS") );
System.out.println( StatusEnum.SUCCESS == StatusEnum.FAIL);
}
}
运行后输出:
true
true
false
枚举可以自定义属性
示例:
public class EnumDemo {
public enum StatusEnum {
INIT(1, "初始化"),
SUCCESS(2, "成功"),
FAIL(3, "失败"),
;
private int code;
private String desc;
StatusEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return this.code;
}
public String getDesc() {
return this.desc;
}
public static StatusEnum getEnumByCode(int code) {
for (StatusEnum status: StatusEnum.values()) {
if (status.getCode() == code) {
return status;
}
}
return null;
}
@Override
public String toString() {
return "StatusEnum{" +
"code=" + code +
", desc='" + desc + '\'' +
'}';
}
}
// main 函数
public static void main(String[] args) {
System.out.println( StatusEnum.getEnumByCode(2) );
}
}
运行后输出:
StatusEnum{code=2, desc='成功'}