12.1.4 枚举继承自Enum类
尽管声明枚举时不能继承超类,但是所有枚举都自动继承超类java.lang.Enum,这个类定义了所有枚举都可以使用的一些方法。Enum类将在本书第Ⅱ部分详细介绍,但是在此先讨论它的3个方法。
可以获取用于指示枚举常量在常量列表中位置的值,这称为枚举常量的原始值。通过ordinal()方法可以检索原始值,该方法的声明如下所示:
- final int ordinal( )
该方法返回所调用常量的原始值,原始值从0开始。因此在Apple枚举中,Jonathan的原始值为0,GoldenDel的原始值为1,RedDel的原始值为2,等等。
可以使用compareTo()方法比较相同类型的两个枚举常量的原始值,该方法的一般形式如下:
- final int compareTo(enum-type e)
其中,enum-type是枚举的类型,e是和调用常量进行比较的常量。请记住,调用常量和e必须是相同的枚举。如果调用常量的原始值小于e的原始值,那么compareTo()方法返回负值;如果两个原始值相同,就返回0;如果调用常量的原始值大于e的原始值,就返回正值。
可以使用equals()方法来比较枚举常量和其他对象的相等性,该方法重写了Object类定义的equals()方法。尽管equals()方法可以将枚举常量和任意其他对象进行比较,但是只有当两个对象都引用同一个枚举中相同的常量时,它们才相等。如果两个常量来自不同的枚举,那么即使它们的原始值相同,equals()方法也不会返回true。
请记住,可以使用“==”比较两个枚举引用。
下面的程序演示了ordinal()、compareTo()以及equals()方法:
|