枚举
枚举是一个特殊的类.
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错.枚举可以让编译器在编译时就可以控制源程序中的填写的非法值.
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();
}