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

来源:互联网 发布:静态应力数据采集 编辑:程序博客网 时间:2024/05/16 10:55

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()传入一个分数,就可以返回相应的枚举常量,应该将分数转换成等级的操作定义在枚举内部。

0 0
原创粉丝点击