Java
大约 1 分钟
Java
目录
枚举类
API: java.lang.Enum<E>5.0
基本使用
enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE }; // 其实是一个类
Size s = Size.MEDIUM;
// /如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用
public enum Size
{
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abreviation) {this.abbreviation = abbreviation;}
public String getAbbreviation() {return abbreviation;}
}
在比较两个枚举类型的值时,永远不需要调用equals,而直接使用“==”就可以了
本质是泛型类
如同Class类一样,鉴于简化的考虑,Enum类省略了一个类型参数。
例如:实际上,应该将枚举类型Size扩展为Enum<Size>
Size s = Size.MEDIUM;
// 是下面的化简
Enum<Size> = Enum<Size>.MEDIUM
Enum公有基类
所有的枚举类型都是Enum类的子类。它们继承了这个类的许多方法。
toString
其中最有用的一个是toString,这个方法能够返回枚举常量名。例如:
Size.SMALL.toString() // 将返回字符串“SMALL”
valueOf
toString的逆方法是静态方法valueOf。例如:
Size s = Enum.valueOf(Size.class, "SMALL"); // 将s设置成Size.SMALL
values方法(静态)
它将返回一个包含全部枚举值的数组
Size[] values = Size.values(); // 返回 [Size.SMALL,Size.MEDIUM,Size.LARGE, Size.EXTRA_LARGE]
ordinal方法
返回enum声明中枚举常量的位置,位置从0开始计数
Size.MEDIUM.ordinal(); // 返回 1
与C++不同
- C/C++中
- 枚举类是一个基本类型
- Java
- 枚举类是一个类
- Python
- 没有枚举类,但可以用类来模拟枚举