为什么要有枚举?
问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
枚举是一个特殊的JAVA类 其构造函数必须私有
Example:
public class EnumDemo {
public static void main(String[] args) {
System.out.println(Week.THU.getWeek());
System.out.println(Week.THU.WeekValue());
System.out.println(Week.THU.ordinal());//输出3,即此枚举对象所在序列的位置
Week[] ee =Week.values();//获取所有枚举对象
String s="EON";
//将字符串转化城枚举对象 可以用来校验WEB开发中 表单提交的值是否违法
Week week1=Week.valueOf("EON");//将抛java.lang.IllegalArgumentException异常
Week week2=Week.valueOf("MON");//此代码正常执行
}
}
enum Week{
MON("星期一"){
public String WeekValue(){
return "上班第一天";
}
}
,TUE("星期二"){
public String WeekValue(){
return "上班第二天";
}
}
,WED("星期三"){
public String WeekValue(){
return "上班第三天";
}
}
,THU("星期四"){
public String WeekValue(){
return "上班第四天";
}
}
,FRI("星期五"){
public String WeekValue(){
return "上班第五天";
}
}
,SAT("星期六"){
public String WeekValue(){
return "上班第六天";
}
}
,SUN("星期日"){
public String WeekValue(){
return "周末休息啦";
}
};
private String str = null;
private Week(String str){
this.str =str;
}
public String getWeek(){
return str;
}
//枚举可以实现接口,或继承静态方法
public abstract String WeekValue();
}