虽然在声明enum时不能继承一个超类,但是所有的枚举都自动的继承java.lang.Enum.该类定义了多个方法,可供所有的枚举使用.大多数情况下并不需要使用这些方法,但有两个方法可能会偶尔用到:ordinal()和compareTo().
ordinal()方法包含一个指示枚举常量在常量列表中的位置的值,称为顺序值.ordinal()方法如下所示:
final int ordinal()
他返回调用常量的顺序值.顺序值从0开始.因此,在Transport枚举中,CAR的顺序值是0,TRUCK是1,AIRPLANE是2,以此类推.
可以使用compareTo()方法来比较相同枚举中的两个常量的顺序值.该方法的基本形式如下所示:
final int compareTo(enum-type e)
其中,enum-type是枚举类型,e是调用常量相比较的常量.注意,调用常量和e常量相比较的常量.注意,调用常量和e常量必须是相同枚举的常量.如果调用常量的顺序小于e常量的顺序值,那么compareTo()方法返回负数;如果两个顺序值相等,该方法返回0;如果调用常量的顺序大于e常量的顺序值,那么返回正数.
下面的程序演示了ordinal()和compareTo()方法:
public class test2 { // @param args public static void main(String args[]) { Transport tp,tp2,tp3; for(Transport t : Transport.values()) System.out.println(t+" : "+t.ordinal()); tp = Transport.AIRPLANE; tp2 = Transport.BOAT; System.out.println("tp comparteTo tp2 : "+tp.compareTo(tp2)); } } enum Transport { CAR,TRUCK,AIRPLANE,TRAIN,BOAT; }
程序输出如下所示:
CAR : 0 TRUCK : 1 AIRPLANE : 2 TRAIN : 3 BOAT : 4 tp comparteTo tp2 : -2