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

你可能感兴趣的:(java,jdk,android,String,交通,编译器)