27.Java-枚举

枚举的特点:

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

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

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

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

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

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

枚举的使用:

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

Weekday day = Weekday.SUNDAY;

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

String name = 枚举对象.name();//返回枚举对象的常量名称
int ordinal = 枚举对象 .ordinal();//返回枚举对象的序号,从0开始
String str = 枚举对象.toString();//返回枚举对象的常量名称

3:编译器生成的枚举类的静态方法(从反编译代码中):

枚举类型[] values();
Weekday[] ws = Weekday.values();//返回道个歉枚举类型所有的常量,使用一个数组封装起来.
枚举类型 values(String name);
Weekday day = Weekday.valueOf("MONDAY");//把一个指定名称字符串转换为当前枚举类中同名的常量

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

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




你可能感兴趣的:(27.Java-枚举)