天天看点

JDK1.5新特性:java枚举的用法

----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ---------------------- 

枚举

a) 为什么要用枚举

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

b) 用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能

i. 私有的构造方法,防止任意实例化。

ii. 每个元素分别用一个公有的静态成员变量表示。

iii. 采用抽象方法定义nextDay就将大量的if else 语句转移成了一个个独立的类(在这里用到了内部类的概念)

iv. 如果想在一个类中编写各个枚举类和测试调用类,可以将枚举类定义成调用类的内部类。

c) 枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面要有分号与其他成员分隔。

d) 枚举的构造方法,必须定义成私有的。默认调用无参构造方法。

e) 枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法、和抽象方法。

f) 每一个元素分别是枚举类的一个实例。

package HeightNew2010;

public class EnumTest {

 public static void main(String[] args) {

  System.out.println(WeekDayEnum.MON.name().toString());

  System.out.println(WeekDayEnum.MON.ordinal());                                //ordinal序数从0开始

  System.out.println(WeekDayEnum.MON);

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

  System.out.println(WeekDayEnum.valueOf("MON"));

  System.out.println(lamp.RED.nextLamp());

 }

//定义一个一般的枚举——星期

 public enum WeekDayEnum{

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

 }

 //定义一个带抽象方法、构造函数、成员变量、普通方法的枚举——交通灯枚举

 public enum lamp{

  RED (50){

   @Override

   public lamp nextLamp() {

    return lamp.GREEN;

   }

  },GREEN(50) {

   @Override

   public lamp nextLamp() {

    return lamp.YELLOW;

   }

  },YELLOW (5){

   @Override

   public lamp nextLamp() {

    return lamp.RED;

   }

  };                                                              

  int time;                                                      //成员变量

  lamp(){}                                                       //无参构造函数

  lamp(int time){this.time=time;}             //带参构造函数

  public abstract lamp nextLamp();

 } 

}

 详情请查看:http://edu.csdn.net/heima