枚举

枚举是一个特殊的类.

枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错.枚举可以让编译器在编译时就可以控制源程序中的填写的非法值.

 

Enum类提供的方法

values();静态方法,返回枚举中的所有元素,是一个枚举类型的数组

valueOf(Str);静态方法,返回的是字符串对应的枚举对象.

name();返回此枚举常量的名称.

toString();返回枚举常量的名称

ordinal();返回的是枚举常量的序数(在枚举声明中的位置,从0开始).

枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象.例如可以调用WeekDay.SUN.getClass().getName()和WeekDay.class.getName().

 

枚举就相当于一个类,其中也可以定义构造函数,成员函数,普通方法和抽象方法.

枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面要有分号与其他成员分隔.把枚举中的成员方法或变量等放在枚举元素的前面,编译器会报告错误.

枚举的构造方法

构造方法必须定义成私有的

调用默认的构造函数.

枚举的方法

由枚举的子类生成的实例对象,这些子类采用类似内部类的方式进行定义.(类似匿名内部类,只不过类名时对象名)

 

枚举只有一个成员时,就可以作为一种单例的实现方式.

因为枚举默认的构造函数是私有的,创建对象只要写个元素就行了.


例子:获取星期枚举对应的中文值

public enum Day {
MON(){
@Override
public String getDay() {
return "星期一";
}
}
,TUE(){
@Override
public String getDay() {
return "星期二";
}
},WED(){
@Override
public String getDay() {
return "星期三";
}
},THU(){
@Override
public String getDay() {
return "星期四";
}
},FRI(){
@Override
public String getDay() {
return "星期五";
}
},SAT(){
@Override
public String getDay() {
return "星期六";
}
},SUN(){
@Override
public String getDay() {
return "星期日";
}
};
public abstract String  getDay();
 }