zoukankan      html  css  js  c++  java
  • 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类
    • 枚举是一个类,可以类中定义成员,比如成员变量、构造方法、成员方法等
    • 枚举中的构造方法是私有的,外界无法调用,只能定义枚举常量的时候使用
    • 枚举中的实例方法可以直接用枚举常量调用

      

  • 相关阅读:
    Eclipse启动不了
    第三章Hibernate关联映射
    System Generator简介
    Chipscope使用
    总线及数据传输技术【待完善】
    多相滤波器
    notepad++与ISE/Vivado关联
    常用IP核
    〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理
    〖Android〗OK6410a的Android HAL层代码编写笔记
  • 原文地址:https://www.cnblogs.com/xulinjun/p/14764797.html
Copyright © 2011-2022 走看看