枚举

Java5开始,出现了一种新的类型:枚举,枚举其实是一个特殊的Java.

 

定义格式:

修饰符   enum  类名

{

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

}

枚举特点:

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

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

③ 默认私有的造方法,即使不写访问权限也是private。(假的构造器)

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

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

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

枚举的操作:

1):获取枚举类型的数组(该类所有的常量)

格式:枚举类名 [] 变量名 = 枚举类名 . values();

         Weekday[] days = Weekday.values();

    2):把一个字符串转换为枚举的常量对象.

     Weekday day   = Weekday.valueOf("THURSDAY");

 类似于day = THURSDAY; 只不过是把枚举的一个常量赋给枚举的一个对象。

3):获取枚举的名称

格式String 变量名 = 枚举类名 . 枚举常量 . name();

     String name = Weekday.SUNDAY.name();//SUNDAY

 //程序员建议使用Enum里面的toString() 方法

格式String 变量名 = 枚举类名 . 枚举常量 . toString();

4):获取枚举的序号(从0开始)相当于获取枚举数组的下标。

格式int 变量名 = 枚举类名 . 枚举常量 . toString();

     int ordinal  = Weekday.SUNDAY.ordinal();//6

从Java1.5开始出现Enum类型,switch也支持操作枚举类型。

枚举的单例模式:

Effective Java中文版(第2版) 中,建议枚举来做单例模式,很安全,即使使用反射也不能创建对象。

原文地址:https://www.cnblogs.com/it-xiaoBai/p/8080541.html