跟王老师学枚举为什么需要枚举

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);
    }
}







以上是关于跟王老师学枚举为什么需要枚举的主要内容,如果未能解决你的问题,请参考以下文章

跟王老师学枚举:使用枚举

跟王老师学枚举:枚举类API

跟王老师学泛型:类型通配符

JavaSE学习之枚举

跟王老师学泛型: 自定义带泛型声明的方法

跟王老师学注解:注解应用案例