java 枚举
枚举:
就是要让某个类型的变量的取值只能为若干个固定值的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
用普通类实现枚举功能:
1,私有的构造方法
2,每个元素分别用一个公有的静态成员变量表示
3,可以有若干公有方法或抽象方法。(采用抽象类方法定义,将省略大量的if.else语句转移成了一个个独立的类。如果想在一个类中编写完成各个枚举类和测试调用用类,那么可以将枚举类定义成调用类的内部类)
枚举的基本应用
枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。
例1:
public abstract 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 final static WeekDay SUN=new WeekDay(){
@Override public WeekDay nextDay() {
return MON;
}
};
public final static WeekDay MON=new WeekDay(){
@Override public WeekDay nextDay() {
return SUN;
}
};
public abstract WeekDay nextDay();
public String toString(){
return this==SUN?"SUN":"MON";
}
}
public class EnumTest {
public static void main(String[] args){
WeekDay weekDay=WeekDay.MON;
System.out.println(WeekDay.SUN.nextDay());
System.out.println(weekDay.toString());
}
}
例2:
public class EnumTest {
public static void main(String[] args){
WeekDay weekDay =WeekDay.FRI;
System.out.println(weekDay);
System.out.println(weekDay.name());
System.out.println(weekDay.ordinal());
System.out.println(WeekDay.valueOf("SUN"));
System.out.println(WeekDay.values().length);
}
public enum WeekDay{
//有无“;”都可
SUN,MON,TUE,WED,THI,FRI,SAT;
}
}

浙公网安备 33010602011771号