跟王老师学枚举为什么需要枚举
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学枚举为什么需要枚举相关的知识,希望对你有一定的参考价值。
跟王老师学枚举(一):为什么需要枚举
主讲教师:王少华 QQ群号:483773664
一、需求
一些方法在运行时,它需要的数据不能任意的,而必须是一定范围内的值。比如,有以下需求:学生的考试成绩只能分为A B C D E五个等级,不能是其他的等级
二、实现
(一)第一种方式:字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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) { //如果赋值不在这些等级内,则抛出异常 if (!grade.matches( "[ABCDE]" )){ throw new RuntimeException( "不支持此参数!" ); } this .grade = grade; } } |
1 2 3 4 5 6 | public class StudentTest { public static void main(String[] args) { Student student = new Student(); student.setGrade( "X" ); } } |
(二)第二种方式:常量
把这个类的所有可能实例都使用 public static final 修饰
需要private 将构造器隐藏起来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Grade { public static final Grade A= new Grade( "A" ); public static final Grade B= new Grade( "B" ); public static final Grade C= new Grade( "C" ); public static final Grade D= new Grade( "D" ); public static final Grade E= new Grade( "E" ); private String value; private Grade(String value){ this .value = value; } public String getValue() { return value; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class Student { private String name; //姓名 private Grade grade; //成绩:A B C D E public String getName() { return name; } public void setName(String name) { this .name = name; } public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this .grade = grade; } } |
1 2 3 4 5 6 | public class StudentTest { public static void main(String[] args) { Student student = new Student(); student.setGrade(Grade.A); } } |
以上是关于跟王老师学枚举为什么需要枚举的主要内容,如果未能解决你的问题,请参考以下文章