java枚举(enum)详解

来源:互联网 发布:黑白视频什么软件 编辑:程序博客网 时间:2024/06/05 01:08

       一.为什么要使用枚举.

            需求:定义一个Employee(员工),使用一个变量restday来表示他哪一天休息.如图:

           

            

           

           

           

       二.枚举的特点:

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

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

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

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

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

            6.枚举实例后有花括号时,该实例是枚举类的匿名内部类对象.

       三.枚举的使用:

            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");//把一个指定名称字符串转换为当前枚举类中同名的常量.