作用
有时候变量的值只在一个有限的范围内,例如服装的尺寸只有小、中、大和特大四种,用一般的变量和常量来保存这种数据有很多不方便的地方,容易出错。针对这种情况,就可以自定义枚举类,例如:
public enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};Size x = Size.LARGE;
语法
- 枚举类型的变量只能存储这个类的定义里面列举的一个值,或者null。
- 枚举类定义的时候列出了几个值,他就有几个实例,不能构造新对象。因此,在比较两个枚举类的变量时,直接用
==。 可以为枚举类型添加构造器、方法和字段。当然构造器只有在定义的时候用。枚举类的构造器总是私有的,可以省略
private修饰符。public enum Size {// 下面是四个EnumSize实例,括号表示调用构造函数// 四个实例的私有变量abbreviation的值分别是 "S", "M", "X", "XL"SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");private final String abbreviation;/*** 构造函数自动是私有的* @param abbreviation 缩写*/Size(String abbreviation) {this.abbreviation = abbreviation;}public String getAbbreviation() {return abbreviation;}}
java.lang.Enum 类
所有的枚举类都自动是抽象类 Enum<E> 类的子类,例如 Size 类就继承了 Enum<Size>。
实例方法:
- String toString() | String name() 返回枚举常量的标识符的字符串值。
- int ordinal() 返回枚举常量的序数,从0开始。
- int compareTo(E other) 根据序数来比较枚举常量,左边的序数减右边的序数就是返回值。
- Class
getDeclaringClass() 这个方法返回的值可能会跟 getClass()不一样,以这个为准。
类方法:
- static
> T valueOf(Class enumClass, String name)
返回指定的枚举类中,具有指定的名字的枚举常量。
- 此外,每个自定义的枚举类,都有一个类方法
values(),它返回所有枚举常量组成的数组。
