枚举

来源:互联网 发布:淘宝复刻wtaps的鲁总 编辑:程序博客网 时间:2024/06/05 21:50
package com.h.test;/** * 手动实现枚举类 * @author wh * */public class Grade {    //1.私有化构造器,将构造器隐藏起来    private Grade(){}    //2.将该类所有可能的实例都用public static final修饰    public static final Grade A = new Grade();    public static final Grade B = new Grade();    public static final Grade C = new Grade();    public static final Grade D = new Grade();}
package com.h.test;/** * 默认构造函数实现枚举 * @author wh * */public enum Grade2 {    /*A,B,C,D;*/    //等效的第二种写法    A(),B(),C(),D();    private Grade2(){}}
package com.h.test;/** * 有参构造函数的枚举类定义 * @author wh * */public enum Grade3 {    A("100-90"),B("90-80"),C("80-70"),D("70-60");    private String score;    public String getScore(){        return score;    }    private Grade3(String score){        this.score = score;    }}
package com.h.test;/** * 枚举类中定义抽象方法,返回更多信息 * @author wh */public enum Grade4 {    A("100-90"){        @Override        public String getDescribeOfScore() {            return "优秀";        }    },B("90-80"){        @Override        public String getDescribeOfScore() {            return "良好";        }    },C("80-60"){        @Override        public String getDescribeOfScore() {            return "一般";        }    },D("60-0"){        @Override        public String getDescribeOfScore() {            return "不及格";        }    };    private String score;    public String getScore(){        return score;    }    private Grade4(String score){        this.score = score;    }    //定义一个抽象方法,返回每个成绩段对应的描述    public abstract String getDescribeOfScore();}
package com.h.test;public class Test {    public static void main(String[] args) {        /*Student s = new Student();        s.setGrade(Grade.A);        System.out.println(s.getGrade());//com.h.test.Grade@... */        /*Student s = new Student();        s.setGrade(Grade2.A);        System.out.println(s.getGrade());//A*/              /*Student s = new Student();        s.setGrade(Grade3.A);        System.out.println(s.getGrade()+":"+s.getGrade().getScore());*/        Student s = new Student();        s.setGrade(Grade4.D);        System.out.println(s.getGrade()+":"+s.getGrade().getScore()+":"+s.getGrade().getDescribeOfScore());        /**         * 枚举类API         * name()         * ordinal()         * valueOf()         * values():JDK中没有,用来遍历枚举类的所有值         */        System.out.println(Grade4.C.name());        //获取枚举的位置(下标)        System.out.println(Grade4.C.ordinal());//2        //将字符串转换为枚举类型        //Grade4 g = Grade4.valueOf("B");        Grade4 gg = Grade4.valueOf(Grade4.class, "B");        System.out.println(gg.getDescribeOfScore());        //遍历所有的枚举值        Grade4[] grades = Grade4.values();         for (Grade4 g : grades) {            System.out.println(g.name()+":"+g.ordinal()+":"+g.getScore()+":"+g.getDescribeOfScore());        }    }}
0 0