java 枚举

枚举:

  就是要让某个类型的变量的取值只能为若干个固定值的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

用普通类实现枚举功能:

  1,私有的构造方法

  2,每个元素分别用一个公有的静态成员变量表示

  3,可以有若干公有方法或抽象方法。(采用抽象类方法定义,将省略大量的if.else语句转移成了一个个独立的类。如果想在一个类中编写完成各个枚举类和测试调用用类,那么可以将枚举类定义成调用类的内部类)

枚举的基本应用

  枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。

例1:

public abstract class WeekDay {

 //构造函数设置为私用  

private WeekDay(){}  

// public final static WeekDay SUN=new WeekDay();

// public final static WeekDay MON=new WeekDay();

// 

// public WeekDay nextDay(){

//  if(this == SUN){

//   return MON;

//  }else{

//   return SUN;

//  }

// }

   public final static WeekDay SUN=new WeekDay(){

  @Override   public WeekDay nextDay() {    

   return MON;

  }

    };

   public final static WeekDay MON=new WeekDay(){

  @Override   public WeekDay nextDay() {

   return SUN;

  }

    };

   public abstract WeekDay nextDay();

   public String toString(){

  return this==SUN?"SUN":"MON";

 }

}

 

public class EnumTest {

   public static void main(String[] args){

      WeekDay weekDay=WeekDay.MON;

      System.out.println(WeekDay.SUN.nextDay());

      System.out.println(weekDay.toString());

 }

}

例2:

public class EnumTest {

   public static void main(String[] args){

      WeekDay weekDay =WeekDay.FRI;

  System.out.println(weekDay);

  System.out.println(weekDay.name());

  System.out.println(weekDay.ordinal());

  System.out.println(WeekDay.valueOf("SUN"));

  System.out.println(WeekDay.values().length);

 }

   public enum WeekDay{

  //有无“;”都可

  SUN,MON,TUE,WED,THI,FRI,SAT;

 }

}

 

 

 

posted @ 2012-12-21 21:05  qinyan  阅读(103)  评论(0)    收藏  举报