枚举学习笔记
(一)普通java类实现枚举:
package cn.cx.reflec.study;
publicclass EnumDemo01 {
publicstaticvoid main(String[] args) {
WeekDay sun = WeekDay.sun;
}
}
class WeekDay {
private WeekDay(){}
publicfinalstatic WeekDay sun = new WeekDay();
publicfinalstatic WeekDay mon = new WeekDay();
当枚举类是抽象类时:
package cn.cx.reflec.study;
publicabstractclass WeekDay02 {
private WeekDay02(){}
publicabstract WeekDay02 nextDay();
publicstaticfinal WeekDay02 sun = new WeekDay02() {
public WeekDay02 nextDay() {
returnmon;
}
};
publicfinalstatic WeekDay02 mon = new WeekDay02(){
public WeekDay02 nextDay(){
returnsun;
}
};
}
(二)枚举的应用:
package cn.cx.reflec.study;
publicclass EnumTest {
publicstaticvoid main(String[] args) {
System.out.println(WeekDay03.valueOf("thu"));
System.out.println(WeekDay03.values());
System.out.println(WeekDay03.mon.name());
System.out.println(WeekDay03.mon.ordinal());
}
//带有抽象方法的枚举。枚举的构造方法要放在对象名之后
publicenum WeekDay03 {
sun(1) {
public WeekDay03 nextDay() {
returnmon;
}
},
mon() {
public WeekDay03 nextDay() {
returnthu;
}
},
thu(2) {
public WeekDay03 nextDay() {
returnwed;
}
},
wed {
public WeekDay03 nextDay() {
returnthir;
}
},
thir {
public WeekDay03 nextDay() {
returnfri;
}
},
fri {
public WeekDay03 nextDay() {
returnsat;
}
},
sat {
public WeekDay03 nextDay() {
returnsun;
}
};
注意构造方法在mon sun .....之后
private WeekDay03() {
System.out.println("first");
}
private WeekDay03(int n) {
System.out.println("second");
}
publicabstract WeekDay03 nextDay();
}
(三)当枚举中只有一个元素的时候其实就是单例。