JAVA入门基础--浅谈枚举Enum类型

时间:2021-01-21 19:22:29

Java枚举Enum在实际项目中也使用较为广泛的。最常用的是定义性别,如:

public enum Sex {
MAN,WOMEN
}

枚举类型是编程中的一个普通用语,可理解为 有限元素的集合。

枚举也是一种特殊的Java类。但也有较为特殊的地方:

(1)构造方法默认是无参的,并且是private的,也可以重写构造函数。

(2)可以在枚举中定义属性、方法。

(3)枚举类型的中成员都是静态、不可以改变的常量(public final static)。

上面的Sex枚举案例中,其默认构造函数是private的,无参的。

private Sex(){}

下面定义一个成绩等级枚举类型实例,分数85-100为EXCELIENT,75-85为GOOD,60-75为PASS,0-60为FAILURE。

定义成绩等级枚举类型Grade:

package com.eyugame.enumdemo;

/**
* 成绩等级枚举类型
*
* <pre>
* 分数85-100为EXCELIENT,75-85为GOOD,60-75为PASS,0-60为FAILURE。
* </pre>
*
* @author gerdan
*
*/
public enum Grade {
EXCELIENT(85, 100), GOOD(75, 85), PASS(60, 75), FAILURE(0, 60);

private int min;
private int max;

/**
* 构造方法,注意枚举的构造使用private修饰
* @param min 最小分数
* @param max 最大分数
*/
private Grade(int min, int max) {
this.max = max;
this.min = min;
}

public int getMin() {
return min;
}

public int getMax() {
return max;
}

/**
* 重写Enum的valueOf()方法
* 传入分数score,返回成绩等级
* Grade.values()获取全部的枚举成员
* @param score 分数
* @return 成绩等级
*/
public static Grade valueOf(int score){
for(Grade grade:Grade.values()){
if(score>grade.min && score<grade.max)
return grade;
}
return null;
}
}

测试类:

package com.eyugame.enumdemo;
/**
* 成绩等级测试
* @see com.eyugame.enumdemo.Grade
* @author gerdan
*
*/
public class GradeDemo {

public static void main(String[] args) {
//调用valueof()静态方法
Grade grade = Grade.valueOf(62);
switch (grade) {
case EXCELIENT:
System.out.println("优秀");
break;
case GOOD:
System.out.println("良好");
break;
case PASS:
System.out.println("及格");
break;
case FAILURE:
System.out.println("不及格");
break;
}
}

}

上面案例中,我们重写了vauleOf()方法,通过valueOf()传入一个分数,就可以返回相应的枚举常量,应该将分数转换成等级的操作定义在枚举内部。