枚举类:实例有限而且固定的类
特征:
(1)、关键字enum
(2)、一个java源文件中最多只能定义一个public访问权限的枚举类,而且该java源文件也必须和该枚举类的类名相同。
(3)、默认继承java.lang.Enum类,而不是继承Object类
(4)、枚举类不能派生子类
(5)、只有private修饰的构造函数
(6)、枚举类的所有实例必须在枚举类第一行显示列出,系统会自动添加public static final修饰。
(7)、枚举类的实例只能是枚举值,而不是随意通过new来创建枚举类对象。
Gender g=Enum.valueOf(Gender.class,"FEMALE");
(8)、应将枚举类的成员变量都使用private final 修饰。
(9)、枚举值实际上是枚举类匿名子类的实例,而不是枚举类的实例。
(10)、枚举类里定义抽象方法时不能使用abstract关键字将枚举类定义成抽象类,因为系统会自动为它添加abstract关键字。定义每个枚举值时必须为抽象方法提供实现。
Enum类常用方法:
public final int compareTo(E o)
比较此枚举与指定对象的顺序。在该对象小于、等于或大于指定对象时,分别返回负整数、零或正整数。 枚举常量只能与相同枚举类型的其他枚举常量进行比较。该方法实现的自然顺序就是声明常量的顺序。
public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name)
返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)
public final String name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。 与此方法相比,大多数程序员应该优先考虑使用 toString() 方法,因为 toString 方法返回更加用户友好的名称。
public final int ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
public String toString()
返回枚举常量的名称