• Java——枚举


    一、概念

    枚举在日常生活中很常见,例如一个人的性别只能是"男"或者"女",一周的星期只能是7天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。

    在JDK1.5之前没有枚举类型,那时候一般用接口常量来替代。而使用Java枚举类型enum可以更贴近地表示这种常量。

    二、定义

    声明枚举时必须使用enum关键字,语法如下

    权限修饰符 enum 枚举名称{
       枚举成员1,
       枚举成员2,
       ...;
    }
    
    // 枚举成员之间使用逗号分隔,最后使用分号结束
    

    例子

    // 使用枚举描述性别数据
    public enum Sex {
        GIRL,
        BOY;
    }
    

    三、使用

    通过枚举类型名直接引用常量即可,例如Sex.BOY、Sex.GRIL

    public class Test {
        public static void main(String[] args) {
            System.out.println(Sex.BOY);   // BOY
            System.out.println(Sex.GIRL);   // GIRL
        }
    }
    

    四、分析枚举

    • 枚举本质上就是最终类
    • 枚举常量,就是枚举类的对象,而且是静态的常量
    • 有私有的构造方法
    • 静态代码

    五、枚举中的其他成员

    枚举类型也是属于类,允许定义其他成分,比如构造器、成员方法、成员变量等。但是定义的成分一定要在枚举实例之后,而且最后一个枚举实例必须要有分号结束。

    比如

    public enum Sex {
        BOY("男孩"),
        GIRL;
    
        // 成员变量
        private String msg;
    
        // 构造方法,必须私有
        private Sex(){}
    
        private Sex(String msg){
            this.msg = msg;
        }
    
        // 成员方法
        public void show(){
            System.out.println(msg);
        }
    }
    
    1. GIRL对象就是由无参构造方法创建的
    2. BOY是有参构造方法创建的
    3. 构造方法权限一定是私有的,即使省略也是private权限。
    4. show方法可以直接用枚举实例调用:Sex.BOY.show();

    六、枚举的使用例子

    性别的案例

    // Sex.java
    public enum Sex {
        BOY("男孩"),
        GIRL;
    
        // 成员变量
        private String msg;
    
        // 构造方法,必须私有
        private Sex(){}
    
        private Sex(String msg){
            this.msg = msg;
        }
    
        public String getMsg(){
            return this.msg;
        }
    
        // 成员方法
        public void show(){
            System.out.println(msg);
        }
    }
    
    // Test.java
    public class Test {
        public static void main(String[] args) {
            String sex = Sex.BOY.getMsg();
            System.out.println(sex);   // 男孩
        }
    }
    

    季节的案例

    // Season.java
    public enum Season {
        SPRING("春天"),
        SUMMER("夏天"),
        AUTUMN("秋天"),
        WINTER("冬天");
    
        private String type;
    
        Season() {
        }
    
        Season(String type) {
            this.type = type;
        }
    
        @Override
        public String toString(){
            return type;
        }
    }
    
    // Test.java
    public class Test {
        public static void main(String[] args) {
            Season sea = Season.SUMMER;
            System.out.println(sea);   // 夏天
        }
    }
    

    七、小结

    • 枚举本质上是一个final类,继承了Enum类
    • 枚举是一个类,可以类中定义成员,比如成员变量、构造方法、成员方法等
    • 枚举中的构造方法是私有的,外界无法调用,只能定义枚举常量的时候使用
    • 枚举中的实例方法可以直接用枚举常量调用

      

  • 相关阅读:
    SAS数据集推送到sql server 数据库 实现代码段
    windows server 2008通过任务计划程序定时访问网站
    把SAS批提交添加到鼠标右键
    SAS 报表输出一些新式控制
    iis ajax post 跨域问题解决
    sas infile 控制导入长度
    SAS infile 导入txt示例
    sas 批量处理缺少缺失值
    vue $router $route
    jsonp使用post方法
  • 原文地址:https://www.cnblogs.com/xulinjun/p/14764797.html
Copyright © 2020-2023  润新知