黑马程序员_Java基础枚举类型

枚举类型在张老师的交通灯的项目中发挥了他强大的作用,在银行调度系统中又再次出现,所有我想,如果不用枚举,问题将不可能那么简单就解决了,同时也更加深刻的意识到了枚举在java编程中的重要性,所以必须对枚举有个更深的了解,而不是仅仅停留在以前的枚举是一个常量,当第一个值时等于1的时候,后面的值会自动递增。

Java的枚举的每个元素都是一个对象,如

public enum WeekDay

{

SUN,MON,TUE,WED,THIRD,FRI,SAT

}

中SUN,MON等都是WeekDay的一个对象,既然是对象,WeekDay中的方法SUN都会有,如

  1. public enum WeekDay  
  2. {  
  3.     SUN,MON,TUE,WED,THI,FRI,SAT;  
  4.     public WeekDay nextDay()  
  5.     {  
  6.         switch(this)  
  7.         {  
  8.         case SUN:return MON;  
  9.         case MON:return TUE;  
  10.         case TUE:return WED;  
  11.         case WED:return THI;  
  12.         case THI:return FRI;  
  13.         case FRI:return SAT;  
  14.         case SAT:return SUN;  
  15.         }  
  16.         return null;  
  17.     }  
  18. }  

定义了nextday的方法,运行下面语句

  1. WeekDay a = WeekDay.FRI;  
  2. System.out.println(a.nextDay());   

                 枚举元素既然是枚举类的对象,那么如果在WeekDay 中定义有参的构造函数,传入String类型的参数,那么有SUN(“ID”)也就不奇怪了,这里也不演示了。但是有一点要主要,枚举类的构造方法要定义成私有的,那样,就说明该类不能在外部实例化对象,也就是你不能在WeekDay外在弄个枚举元素SUN1,这样是不行的。其实但我们在WeekDay中定义一个SUN时,其实就是相当于WeekDay  SUN=  new WeekDay(),这种只允许在其内部实例话对象的方法很容易让人想到单例,这样一想,如果枚举类型中只有一个枚举元素时,那就是单例。Java的枚举类型其实就是经过特殊处理的类。虽然如此,枚举的重要性不可低估,在后面的交通灯问题上,张老师就是用的枚举类型。

posted on 2013-05-14 13:34  小川!  阅读(167)  评论(0编辑  收藏  举报