首页 > 代码库 > 枚举类:用enum关键字来定义一个枚举类

枚举类:用enum关键字来定义一个枚举类

1)枚举类的两种定义方法                1》通过构造器                    public enum Grade{                        A("A", "90-100"),B("B","80-89"),C("C", "70-79"),D("D", "80-89"),E("E", "90-100");                                                private String tip;                        private String desc;                                                private Grade(String tip, String desc){                            this.tip = tip;                            this.desc = desc;                        }                                            public String getTip() {                            return tip;                        }                                            public String getDesc() {                            return desc;                        }                                            }                2》通过匿名内部类(一般用于有抽象方法的枚举)                                        eg:                        public enum Season {//注意:含有抽象方法的枚举类不用加abstract                            SPRING{                                @Override                                public void show(){                                    System.out.println("春天");                                }                            },SUMMER{                                @Override                                public void show() {                                    System.out.println("夏天");                                }                            },AUTOMN{                                @Override                                public void show() {                                    System.out.println("秋天");                                }                            },WINNTER{                                @Override                                public void show() {                                    System.out.println("冬天");                                }                            };                            //抽象方法                            public abstract void show();                        }            3)switch语句和枚举类的联用                eg:                    Season season = Season.SPRING;                    String msg = null;                        switch(season){                        case SPRING:msg = "1"; break;//注意不是Season.SPRING                        case SUMMER:msg = "2"; break;                        case AUTOMN:msg = "3"; break;                        case WINNTER:msg = "4"; break;                        }                    System.out.println(msg);                    4)枚举类常用方法                1》String name():返回枚举值的名称                2》int ordinal():显示枚举值对应的索引,从0开始                3》type[] values():获得该枚举类对应的所有枚举值,返回一个数组                4》static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)://将字符串转换成带指定名称的指定枚举类型的枚举常量。                eg:                    Season season = Season.SPRING;                    System.out.println(season.name());//SPRING                    System.out.println(season.ordinal());//0【下标】                                        Season[] seasons = season.values();//获得属性值数组                    for(Season s : seasons){                        System.out.println(s.name());                    }                                        //Season.valueOf(Season.class, "QQ");//可判断QQ是否属于枚举值之一,                    //抛出IllegalArgumentException:异常                                        System.out.println("=="+Season.valueOf(Season.class, "SPRING").name());//正常:SPRING.                            //Season.valueOf(Season.class, "spring");//也会抛出异常                                5)理解:                1》枚举类中的每一个枚举值,相当于是实例变量                2》枚举类与普通类一致,可以继承或实现,如果有抽象方的话,可以利用每个枚举类以匿名内部类的方式去实现                3》枚举值可以用在switch语句的case后面,并且直接些枚举值,不需要加上枚举类。                4》若枚举类只有一个枚举值,则可类似于单例设计模式。                            补充:注意枚举类和枚举集合的区别.Enum  Enumeration

 eration

枚举类:用enum关键字来定义一个枚举类