Java 枚举

来源:互联网 发布:美工设计招聘要求 编辑:程序博客网 时间:2024/06/06 01:29
    public class Student {        /*        使用常量,不够优雅        private String name;        private String grade; //成绩等级 A B C D E        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getGrade() {            return grade;        }        public void setGrade(String grade) throws Exception {            if(!grade.matches("[ABCDE]")){                throw new Exception("赋值不正确!");            }            this.grade = grade;        }        */        private String name;        private String grade; //成绩等级 A B C D E        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getGrade() {            return grade;        }        public void setGrade(String grade) throws Exception {            if (!grade.matches("[ABCDE]")) {                throw new Exception("赋值不正确!");            }            this.grade = grade;        }    }    enum Grade {        A("100-90") {            public String toLocaleGrade() {                return "优";            }        },        /*          原理          public static Grade B = new Grade(){               public String toLocaleGrade(){                return "良好";              }          };         */        B("89-80") {            public String toLocaleGrade() {                return "良好";            }        },        C("79-70") {            public String toLocaleGrade() {                return "好";            }        },        D("69-60") {            public String toLocaleGrade() {                return "及格";            }        },        E("59-0") {            public String toLocaleGrade() {                return "没及格";            }        };        /*          原理          public static Grade A = new Grade("100-90");        */        private Grade(String score) {            this.score = score;        }        private String score;        public String getScore() {            return score;        }        // 抽象方法        public abstract String toLocaleGrade();    }    @Test    public void 枚举测试(){        /*        Student stu = new Student();        stu.setGrade(Grade.D);  //给学生类中的grade变量赋值        //取出学生对象中的grade变量,调用grade对象中的getScore()取出对应的数值:100-90 。。。        System.out.println(stu.getGrade().getScore());        //取出学生对象中的grade变量,调用grade对象中的toLocaleGrade()取出对应的(数值):优,良。。。        System.out.println(stu.getGrade().toLocaleGrade());        */        // switch 的应用        Grade g = Grade.B;        switch (g) {            case A:                System.out.println(g.getScore()+"   "+g.toLocaleGrade()+"   继续努力");                break;            case B:                System.out.println(g.getScore()+"   "+g.toLocaleGrade()+"   继续努力");                break;            case C:                System.out.println(g.getScore()+"   "+g.toLocaleGrade()+"   继续努力");                break;            default:                System.out.println(g.getScore());                break;        }        // 输出 enum 中的值 和 索引        for (Grade gg : Grade.values()) {            System.out.println(gg.name() + "\t" + gg.ordinal()); // name()        }        // 将一个 Object 转换成 枚举,需要是枚举中的值        Grade a = Grade.valueOf("A");        if (a == Grade.A) {            System.out.println("OK");        } else {            System.out.println("error");        }    }/*输出结果89-80   良好   继续努力A   0B   1C   2D   3E   4OK*/
原创粉丝点击