枚举类:用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

posted on 2014-09-03 12:43  SkyGood  阅读(2049)  评论(0编辑  收藏  举报