枚举

枚举是就是固定的多个常量对象的集合

定义格式

[修饰符] enum 枚举类型名

{

  常量A,常量B,常量C...; 

}

我们自定义的枚举类型,在编译(在底层)都是直接继承于java.lang.Enum是所有枚举的父类。

枚举类的特点

1. 枚举的直接父类java.lang.Enum,但是不能显示继承Enum。

2. 枚举就是相当于一个类,可以定义构造方法、成员变量、普通方法和抽象方法。

3. 默认私有的构造方法,即使不写访问权限也是private(假构造器,底层没有无参数构造器)。

4. 每个实例分别用一个全局常量表示,枚举类的对象是固定的,实例个数有限,不能使用new关键字。

5. 枚举实例必须位于枚举体中的最开始部分,枚举实例列表的后面要有分号与其他成员相分割。

6. 枚举实例后有花括号时,该实例是枚举类的匿名内部类对象(查看编译后的class文件)。

枚举的使用

1. 枚举中都是全局公共的静态常量,可以直接使用枚举类名调用。

  Weekday day = Weekday.SATURDAY;

2. 因为java.lang.Enum类是所有枚举的父类,所以所有的枚举对象可以调用Enum类中的方法。

  String name = 枚举对象.name();//返回枚举对象的常量名称

  int ordinal = 枚举对象.ordinal();//返回枚举对象的序号,从0开始

  String str = 枚举对象.toString();//返回枚举对象的常量名称

3. 编译器生成的枚举类的静态方法(从反编译代码中可以看到)

  枚举类型[] values();

  Weekday[] ws = Weekday.values();//返回当前枚举类型所有的常量,使用一个数组封装起来

  枚举类型 valueOf(String name);

  Weekday day = Weekday.valueOf("MONDAY");//把一个指定名称字符串转换为当前枚举类中同名的常量

4. 从java5开始出现枚举,switch也支持枚举类型

  switch只支持枚举,支持枚举类型是因为底层使用的枚举对象的ordinal,而ordinal的类型依然是int类型

枚举主要用来表示事物固定的类型

posted @ 2017-01-08 16:57  wenxudong  阅读(261)  评论(0编辑  收藏  举报