枚举类型(enum type)是指由一组固定的常量组成合法值的类型,如一年中的季节、太阳系中的行星或者一副牌中的花色。
在编程语言中没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具名的int常量,每个类型成员一个常量:
public static final int APPLE_FUJT = 0 ;
public static final int APPLE_PIPPIN =1 ;
public static final int APPLE_GRANNY_SMITH =2 ;
public static final int ORANGE_NAVEL = 0 ;
public static final int ORANGE_TEMPLE =1 ;
public static final int ORANGE_BLOOD =2 ;
这种方法称作int枚举模式(int enum pattern),存在着诸多不足。
采用int枚举模式的程序是十分脆弱的。因为int枚举是编译时常量,被编译到使用它们的客户端中。如果与枚举常量关联的int发生了变化,客户端就必须重新编译。如果没有重新编译,程序还是可以运行的,但是它们的行为就是不确定的。
int枚举常量只是一个数字,将其打印出来,无多大意义。要遍历一个组中的所有int枚举常量,甚至获得int枚举组的大小,这些都没有很可靠的方法。