[java]代码库
枚举的作用:通过定义类来限制一定范围的值。
1. 简单的枚举
在JDK1.5之前可以通过以下代码来完成。
class Grade {
private Grade(){} //必须把构造函数设为私有的
//创建static final的本类对象,用于限定范围
public static final Grade A = new Grade();
public static final Grade B = new Grade();
public static final Grade C = new Grade();
public static final Grade D = new Grade();
public static final Grade E = new Grade();
}
在JDK1.5之后,通过枚举来实现。枚举的关键字是enum。以上代码可用枚举实现如下:
enum Grade {
A,B,C,D,E;
}
大大简化了代码的书写。
2. 带有参数的构造函数的枚举,用于封装更多的信息。
//Grade分级,A(100~90)、B(89~80)、C(79~70)、D(69~60)、E(59~0)
enum Grade {
A("100~90"),B("89~80"),C("79~70"),D("69~60"),E("59~0");
private String value; // 定义私有变量value
// 定义有参的构造函数,可以封装更多的信息
private Grade(String value) {
this.value = value;
}
// 定义公共方法,用于获取value
public String getValue() {
return this.value;
}
}
3. 带抽象的枚举
enum Grade {
// 初始化对象时要覆写抽象方法
A("100~90"){
public String localValue() {
return "优";
}
},
B("89~80"){
public String localValue() {
return "良";
}
},
C("79~70"){
public String localValue() {
return "一般";
}
},
D("69~60"){
public String localValue() {
return "差";
}
},
E("59~0"){
public String localValue() {
return "不及格";
}
};
private String value; // 定义私有变量value
// 定义有参的构造函数,可以封装更多的信息
private Grade(String value) {
this.value = value;
}
// 定义公共方法,用于获取value
public String getValue() {
return this.value;
}
// 定义抽象方法
public abstract String localValue();
}
注意:枚举中定义的A,B,C,D,E均是对象,不是属性。