看完两个7K面试题后,又将张老师讲的枚举重新看一遍,写下自己对枚举的认识:
首先是用普通的Java类来实现枚举的方法:
<span style="font-size:14px;">public class WeekDay {</span>
<span style="font-size:14px;">
</span>
<span style="font-size:14px;">//此时定义的值是对象类型的值,每一个枚举元素就是一个对象
private final static WeekDay SUM=new WeekDay();
private final static WeekDay MON=new WeekDay();
private WeekDay(){
}
public WeekDay nextDay(){
if (this==SUM){
return MON;
}else{
return SUM;
}
}
public String toString(){
return this==SUM?"SUM":"MON";
}
}</span>
第二种考的最多的是,结合内部类的方法:
public abstract class WeekDay {
private final static WeekDay SUM=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
private final static WeekDay MON=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return SUM;
}
};
private WeekDay(){
public abstract WeekDay nextDay();//采用抽样方法定义的类就会将大量的if-else语句转移成一个类
public String toString(){
return this==SUM?"SUM":"MON";
}
}
基本的枚举类:
enum WeekDay1{
SUN(){
public WeekDay1 nextDay(){
return MON;
}
},
MON(){
public WeekDay1 nextDay(){
return TUE;
}
},
TUE(){
public WeekDay1 nextDay(){
return WED;
}
},
WED(){
public WeekDay1 nextDay(){
return THT;
}
},
THT(){
public WeekDay1 nextDay(){
return FRI;
}
},
FRI(){
public WeekDay1 nextDay(){
return SRA;
}
},
SRA(){
public WeekDay1 nextDay(){
return SUN;
}
};
private WeekDay1(){}
public Integer number;
public Integer getWeekDay(){
return this.number;
}
public abstract WeekDay1 nextDay();
}