嘿牛程序员__成都传智博客__枚举的一个带有case的普通实现——以星期的转换为例

来源:互联网 发布:网络协议分层的优缺点 编辑:程序博客网 时间:2024/06/02 13:14

---------------------- android培训、java培训、期待与您交流! ----------------------

 

微笑

枚举(二)

关于枚举的相关概念,我们上一篇已经讨论过。前面的而一个例子是通过抽象方法来实现的。我们都知道抽象方法只能定义,如果要实现只能被继承或被子类实现。前面的例子,我们是通过内部类来完成。下面我们借助一个例子,用一个普通方法来实现枚举之间值得转换。

例二:要求定义一个枚举类,实现星期的转化,并实现get 、set方法,用于设置转换时间

//实现如下:

package javaEnum;
/**
 * 枚举 例二
 * 本程序没有采用抽象方法,而是采用普通方法来实现的,实现的原理基本相似。用到CASE方法
 *
 * */
public enum Weekday2 {
 SUN("星期日",3),MON("星期一",3),TUE("星期二",3),WED("星期三",3),THU("星期四",3),FRI("星期五",3),SAT("星期六",3);
 private  String name;
 private  long time;
 private Weekday2(String name,long time){
  this.name=name;
  this.time=time;
 }
 public Weekday2 nextDay(){
   switch(this){

  case SUN:
   System.out.println("周日转向周一,等待时间为"+getTime()+"秒");
         getStop();
         return  MON;
     case MON:
   System.out.println("周一转向周二,等待时间为"+getTime()+"秒");
         getStop();
         return  TUE;
     case TUE:
   System.out.println("周二转向周三,等待时间为"+getTime()+"秒");
         getStop();
         return  WED;
     case WED:
   System.out.println("周三转向周四,等待时间为"+getTime()+"秒");
         getStop();
         return  THU;        
     case THU:
   System.out.println("周四转向周五,等待时间为"+getTime()+"秒");
         getStop();
         return  FRI;        
     case FRI:
   System.out.println("周五转向周六,等待时间为"+getTime()+"秒");
         getStop();
         return  SAT;        
     case SAT:
   System.out.println("周六转向周日,等待时间为"+getTime()+"秒");
         getStop();
         return  SUN;                
     default:
      return  null;
      } 
 }
 public String  getName() {
  return name;
 }
 public void setTime(long time) {
      this.time = time;
  }
 public long getTime() {
  return time;
 }
 public  void getStop() {
  try{
   Thread.sleep(1000*time);
   }catch(Exception e){
    System.out.println(e.getMessage());
   }
 }   
}

//测试类

package javaEnum;

public class TestWeekday2 {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //遍历weekday
  for(Weekday2 w:Weekday2.values())    
   System.out.println("find    value:"+ w);
  //测试
  Weekday2 we01=Weekday2.MON;
  System.out.println(we01.nextDay());
  System.out.println(we01.nextDay().getName());
  Weekday2 we02=Weekday2.SUN;
  System.out.println(we02.nextDay());
  System.out.println(we02.getName()); 
  //周期循环
   Weekday2 w01=Weekday2.SUN;
   Weekday2 w02=Weekday2.MON;
   Weekday2 w03=Weekday2.TUE;
   Weekday2 w04=Weekday2.WED;
   Weekday2 w05=Weekday2.THU;
   Weekday2 w06=Weekday2.FRI;
   Weekday2 w07=Weekday2.SAT;
   //设定时间
   w01.setTime(3);
   w02.setTime(1);
   w03.setTime(3);
   w04.setTime(1);
   w05.setTime(3);
   w06.setTime(1);
   w07.setTime(3);
   //实现两次循环
   for(int i=0;i<2;i++)
   {
   w01.nextDay();
   w02.nextDay();
   w03.nextDay();
   w04.nextDay();
   w05.nextDay();
   w06.nextDay();
   w07.nextDay();
      }  
 }
}

再见

 

 

 

 

---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima