枚举2 用内部类的方法实现模拟枚举
package cn.itcast.day1;
public abstract class Weekday1 {
private Weekday1(){}
public static final Weekday1 SUN = new Weekday1(){
@Override
public Weekday1 nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public static final Weekday1 MON = new Weekday1(){
@Override
public Weekday1 nextDay() {
// TODO Auto-generated method stub
return TUS;
}
};
public static final Weekday1 TUS = new Weekday1(){
@Override
public Weekday1 nextDay() {
// TODO Auto-generated method stub
return WEN;
}
};
public static final Weekday1 WEN = new Weekday1(){
@Override
public Weekday1 nextDay() {
// TODO Auto-generated method stub
return THU;
}
};
public static final Weekday1 THU = new Weekday1(){
@Override
public Weekday1 nextDay() {
// TODO Auto-generated method stub
return FRI;
}
};
public static final Weekday1 FRI = new Weekday1(){
@Override
public Weekday1 nextDay() {
// TODO Auto-generated method stub
return SAT;
}
};
public static final Weekday1 SAT = new Weekday1(){
@Override
public Weekday1 nextDay() {
// TODO Auto-generated method stub
return SUN;
}
};
public abstract Weekday1 nextDay();
public String toString(){
if(this == SUN){
return "SUN";
}else if(this == MON){
return "MON";
}else if(this == TUS){
return "TUS";
}else if(this == WEN){
return "WEN";
}else if(this == THU){
return "THU";
}else if(this == FRI){
return "FRI";
}else{
return "SAT";
}
}
}
//测试
package cn.itcast.day1;
public class Enum {
public static void main(String[] args) {
Weekday1 weekday = Weekday1.SAT;
System.out.println(weekday.nextDay());
System.out.println(Weekday.FRI);
System.out.println(Weekday.MON.name());
System.out.println(Weekday.MON.ordinal());
}
public enum Weekday{
//最简单的枚举
SUN,MON,TUS,WED,THU,FRI,SAT;//此处可以加 ;号,亦可以不加
//带构造方法的枚举
//当枚举带构造方法时,1 ,构造方法必须放在属性后面
// 2, 属性后面必须加 ;号
// 3, 构造方法必须是私有的
//无参的构造方法
private Weekday(){}
//有参的构造方法
private Weekday(int day){
}
}
}