Java中的枚举是一种特殊的类,可以将一组固定常量的集合组成一种类型,使用方便且类型安全。使用enum关键字定义。
enum类型父类为Enum,通过Enum.class可见Enum为抽象类,实现了Comparable<E>和Serializable接口。
私有属性name表示enum值的名称,可通过name()函数和toString()方法访问,可使用valueOf(String)将enum值的名字转变成enum值。
私有属性ordinal表示enum值定义时的顺序,可通过ordinal()函数访问,compareTo()方法按照ordinal来比较大小。
外界不可访问Enum的构造器,故它是实例受控的。
enum值不可被clone,保证单例,clone方法final,不可被子类重写。
enum值不可被反序列化,保证单例。
enum类型允许添加任意方法和域,可实现任意接口,可以包含内部类。
例子
----------------
package demos.myenum; public enum MyEnum { ONE(1){public void print(){System.out.println(this.toString());}}, TWO(2){public void print(){System.out.println(this.ordinal());}}, THREE(3), FORE(4); private int value; public String desc; MyEnum(int a){ System.out.println(super.name()); value = a; } public void print(){ System.out.println(this.value); } public static void main(String[] args) { MyEnum.FORE.value=123; MyEnum.FORE.print(); MyEnum a =MyEnum.valueOf("FORE"); } }
----------------