为什么要有枚举
问题:要定义星期几或性别的变最,应该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday=0;
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。
枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。
私有的构造方法
每个元素分别用一个公胡静态成员变量表示
可以有若干公胡方法或抽象方法。例如,要提供nextDay方法必须是抽象的。
枚举的基本应用
用一般类模拟枚举
package laladin.learn;
class EnumTest {
public Static void main(String[]args){
WeekDay weekDay = WeekDay.MON;
}
]
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) {
return MON;
}else{
return SUN;
}
}
public String toString() {
return this==SUN?"SUN":"MON";
}
}
基本的枚举类:
package laladin.learn;
public class EnumTest {
public static void main(Stirng[] args){
WeekDay weekDay=WeekDay.FRI;
System.out.println(weekDay); //返回FRI
System.out.println(weekDay.name());//打印出名字,返回FRI
System.out.println(weekDay.ordinal());}//返回所在的位置:返回5
System.out.println(WeekDay.valueOf("SUN"));//将传来的字符串返回对应的枚举元素。
System.out.println(WeekDay.values().length);//返回枚举的所有元素到数组
public enum WeekDay{ //用enum定义 枚举相当于一个类,他的元素就是一个实例对像
SUN,MON,TUE,WED,THI,FRI,SAT;
}
}