• Java 枚举


    import java.util.EnumMap;
    import java.util.EnumSet;
    
    public enum Week {
        MON {
            public String toLocaleString() {
                return "星期一";
            }
        },
        TUES {
            public String toLocaleString() {
                return "星期二";
            }
        },
        WEB {
            public String toLocaleString() {
                return "星期三";
            }
    
        },
        THUR {
            public String toLocaleString() {
                return "星期四";
            }
    
        },
        FRI {
            public String toLocaleString() {
                return "星期五";
            }
    
        },
        SAT {
            public String toLocaleString() {
                return "星期六";
            }
    
        },
        SUN {
            public String toLocaleString() {
                return "星期日";
            }
    
        };
        public abstract String toLocaleString();
    
        public static void main(String[] args) {
            for (Week w : Week.values()) {
                System.out.println(w.toLocaleString());
            }
            testEnumSet();
            testEnumMap();
            testTraversalEnum();
        }
    
        /* 
         * 演示EnumSet如何使用,EnumSet是一个抽象类,获取一个类型的枚举类型内容<BR/>
         * 
         * 可以使用allOf方法
         * 
         * values()方法是编译器插入到enum定义中的static方法,所以,
         * 当你将enum实例向上转型为父类Enum是,values()就不可访问了。
         * 解决办法:在Class中有一个getEnumConstants()方法,
         * 所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有的enum实例
         */
        private static void testEnumSet() {
    
            EnumSet<Week> currEnumSet = EnumSet.allOf(Week.class);
    
            for (Week aLightSetElement : currEnumSet) {
    
                System.out.println("当前EnumSet中数据为:" + aLightSetElement);
    
            }
            ;
            Week[] weeks = Week.class.getEnumConstants();
    
        }
    
        /**
         * 
         * 演示EnumMap的使用,EnumMap跟HashMap的使用差不多,只不过key要是枚举类型
         */
        private static void testEnumMap() {
            EnumMap<Week, String> currEnumMap = new EnumMap<Week, String>(Week.class);
            // 1.演示定义EnumMap对象,EnumMap对象的构造函数需要参数传入,默认是key的类的类型
    
            currEnumMap.put(Week.MON, "星期1");
            currEnumMap.put(Week.TUES, "星期2");
            currEnumMap.put(Week.WEB, "星期3");
            currEnumMap.put(Week.THUR, "星期4");
            currEnumMap.put(Week.FRI, "星期5");
            currEnumMap.put(Week.SAT, "星期6");
            currEnumMap.put(Week.SUN, "星期7");
            for (Week aLight : Week.values()) {
    
                System.out.println("[key=" + aLight.name() + ",value="
    
                + currEnumMap.get(aLight) + "]");
    
            }
    
        }
        
         /**
         * 
         * 演示枚举类型的遍历
         */
    
        private static void testTraversalEnum() {
    
            Light[] allLight = Light.values();
    
            for (Light aLight : allLight) {
    
                System.out.println("当前灯name:" + aLight.name());
    
                System.out.println("当前灯ordinal:" + aLight.ordinal());
    
                System.out.println("当前灯:" + aLight);
    
            }
    
        }
        
        public enum Light {
    
            // 利用构造函数传参
    
            RED(1), GREEN(3), YELLOW(2);
    
            // 定义私有变量
    
            private int nCode;
    
            // 构造函数,枚举类型只能为私有
    
            private Light(int _nCode) {
    
                this.nCode = _nCode;
    
            }
    
            @Override
            public String toString() {
                return String.valueOf(this.nCode);
    
            }
        }
    }

    只能够表示出红灯、绿灯和黄灯,但是具体的值没办法表示出来。可以通过构造函数和覆写toString方法来实现。

    步骤:

    1、为枚举类(Light)增加私有构造方法

    2、定义枚举类型的值(通过构造函数传入对应的参数)

    3、覆写toString方法,返回从构造函数中传入的参数即可

  • 相关阅读:
    简单的描述关于开发部署产生401,500的错误处理
    文件的批量打包下载
    json的序列化与反序列化
    实现MD5的加密和解密
    dropdownlist的OnSelectedIndexChanged方法不触发
    sqlserver错误2,error 40
    C#存储过程调用的三个方法
    SQL Server 错误:924 解决方法
    判断是否在时间间隔内
    切面添加日志
  • 原文地址:https://www.cnblogs.com/sallet/p/4424829.html
Copyright © 2020-2023  润新知