1 引言
当取值在一个有限的集合内,可以自定义枚举类型。包括有限个命名的值。
2 实例
public enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE}
- 这个声明定义的类型是一个类,他刚好有四个实例,不能构造新的对象。也因此,在比较两个枚举类型的值时,不需要调用equals,直接使用
==
即可。SMALL,MEDIUM...都是Size这个类的实例。 - 如果需要的话,可以为枚举类型增加构造器、方法和字段。构造器时在构造枚举常量的时候调用。
public enum Size {
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abbreviation) {this.abbreviation = abbreviation; }
public String getAbbreviation() {return abbreviation};
}
枚举的构造器总是私有的。
- 所有的枚举类型都是Enum类的子类。他们继承了许多方法例如
toString()
,他们会返回枚举常量名。(他的逆方法时valueOf)。
Size s = Enum.valueOf(Size.class, "SMALL"); // 将s设置为Size.SMALL;
- 每个枚举类都有一个静态values方法,他将返回一个包含全部枚举值的数组。
Size[] values = size.values();
-
ordinals 方法返回enum声明中枚举常量的位置,位置从0开始计数。
-
int compareTo(E other)
如果枚举常量出现在other之前,返回一个负整数,如果this==other,则返回0;否则返回一个正整数。枚举常量的出现次序在enum声明中给出。
3 后记
此文大概介绍了枚举类的定义,便于后续见到其之后理解他的定义方式(构造函数)。