1.没有枚举类(java5)以前
class Grade{
pivate Grade(){} //私有化构造函数
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();
public static final Grade F = new Grade();
}
2.有了枚举enum以后
enum Grade{
A,B,C,D,E;//枚举值,相当于类的对象
}
3.带构造函数与方法的枚举
enum Grade{
A("90-100"),B("80-89"),C("70-79"),D("60-69"),E("0-50"); //这里相当于对象可以
private String value;
private Grade(String value){
this value=value;
}
public String getValue(){
return this.value;
}
}
4.带抽象方法的枚举
enum Grade{
A("90-100"){
//实现抽象方法
public String localValue(){
return "优秀";
}
},
B("80-89"){
//实现抽象方法
public String localValue(){
return "良好";
}
},
C("70-79"){
//实现抽象方法
public String localValue(){
return "一般";
}
},
D("60-69"){
//实现抽象方法
public String localValue(){
return "及格";
}
},
E("0-50"){
//实现抽象方法
public String localValue(){
return "不及格";
}
};
//这里相当于对象可以
private String value;
private Grade(String value){
this value=value;
}
public String getValue(){
return this.value;
}
public abstract String localValue();
}
5.枚举的其他细节
1.枚举类也是一种特殊形式的java类
2.枚举类中声明的每一个枚举值代表枚举类的一个实例对象
3.与java中的普通类一样,在声明美剧类时,也可以声明属性、方法和构造函数,但是在枚举类的构造函数必须为私有的
4.枚举类也可以实现接口、或继承抽象类
5.美剧类只有一个枚举值,则可以当作单态设计模式使用
6.所有枚举类都是Enum类的子类,枚举对象不能继承其他类
7.枚举类常用方法
name() 枚举类的名称
ordinal() 枚举类的位置
valueof(Class enumClass,String name) 字符串转换成枚举类
valueof(String name)