简介

java 枚举是一个特殊的类,一般表示常量,比如一周7天,一年4个季节。

示例

enum LevelEnum {
LOW,
MEDIUM,
HIGH
}

遍历

public class EnumTest {
public static void main(String[] args) {
LevelEnum myVal = LevelEnum.LOW;
System.out.println(myVal);

// for 循环
for (LevelEnum level : LevelEnum.values()) {
System.out.println(level + " name->" + level.name() + " ordinal->" + level.ordinal());
}
}
}

输出

LOW
LOW name->LOW ordinal->0
MEDIUM name->MEDIUM ordinal->1
HIGH name->HIGH ordinal->2

Enum定义

public abstract class Enum<E extends Enum<E>>
implements Comparable<E>, Serializable {
/**
* The name of this enum constant, as declared in the enum declaration.
* Most programmers should use the {@link #toString} method rather than
* accessing this field.
*/
private final String name;
...
}

enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Serializable 和 java.lang.Comparable 两个接口。

values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 类中:

  • values() 返回枚举类中所有的值
  • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样
  • valueOf()方法返回指定字符串值的枚举常量

System.out.println(LevelEnum.valueOf("MEDIUM"));