枚举就是要让某个类型的变量的取值只能为诺干哥固定值中的一个,否则,编译器就会报错。枚举可以让编译器再编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
用普通类来实现枚举的功能,定义一个WeekDay的类来模拟枚举功能,代码如下
WeekDay.java
package com.itheima.shipin.meiju;
public class WeekDay {
private WeekDay() {
}
public final static WeekDay SUN = new WeekDay();
public final static WeekDay MON = new WeekDay();
public WeekDay nextDay() {
if (this == SUN) { //如果今天是星期天那么nextDay返回星期一
return MON;
} else {
return SUN; //如果今天是星期一那么nextDay返回星期天
}
}
public String toString(){
return this==SUN?"SUN":"MON";
}
}
EnumTest.java
package com.itheima.shipin.meiju;
public class EnumTest {
public static void main(String[] args) {
WeekDay weekday = WeekDay.SUN; //weekday取值为SUN,星期天
System.out.println(weekday.nextDay());
}
}
运行结果
MON
以上实验我们用枚举类来实现,代码如下:
EnumWeekDay.java 带有抽象方法的枚举类。
package com.itheima.shipin.meiju;
public enum EnumWeekDay {
SUN() {
public EnumWeekDay nextDay() {
return MON;
}
},
MON() {
public EnumWeekDay nextDay() {
return SUN;
}
};
public abstract EnumWeekDay nextDay();
}
EnumTest.java
package com.itheima.shipin.meiju;
import java.util.Date;
public class EnumTest {
public static void main(String[] args) {
// WeekDay weekday = WeekDay.SUN;
// System.out.println(weekday.nextDay());
EnumWeekDay enday = EnumWeekDay.MON;
System.out.println(enday.nextDay());
}
}
运行结果
SUN