枚举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){

}

}

}

posted @ 2014-07-12 21:21  siashan  阅读(239)  评论(0编辑  收藏  举报