枚举

Posted on 2013-03-20 20:12  我是王琦  阅读(227)  评论(0)    收藏  举报

 

枚举

枚举是一种特殊的类,是java jdk1.5的新特性

定义枚举用的关键字是enum.枚举就是让某些变量的取值只能是在若干个固定的值其中的一个,把这些值类类型固定,并且罗列出来,否则编译器就会报错。

如定义一个变量weekday变量代表一个星期中的某天,一个星期中只有七天,而且是7个固定的值,所以可以用枚举的功能来实现。

如果赋值是这7个值之外的值,就会报错。

在jdk1.5之前,定义枚举的方法是自定义类,在此类中,定义变量用static和final修饰,达到值变量值固定修改的目的。

自定义枚举的注意事项:枚举的元素列表必须放在类的开头第一行,必须私有化构造方法。

当有多个构造方法时,在元素后加(参数)即调用哪个构造方法。

常用方法:

String name();返回其此枚举常量目的名称。

Enum valueOf(class enumType,String name)返回带指定名称的指定枚举型的枚举常量

普通示例:用普通方法实现枚举的功能

定义一个类Weekday表示是星期,有七个字段分别是周一至周五,还有获下一天的方法。

abstract class WeekDay//定义抽象类,
{
 private WeekDay(){}//私有化构造方法,让调用者不能创建对象。

//定义值,用final修饰让值固定,
 public static final WeekDay SUN=new WeekDay(){
  public WeekDay nextDay()//复写nextDay()方法
  {
   
   return MON;
  }
 };
 ......

//周一到周六省略

......


  public static final WeekDay SAT=new WeekDay(){
  public WeekDay nextDay()
  {
   return SUN;
  }
 };

//定义抽象方法,获取下一天
 public abstract WeekDay nextDay();
 public String toString()
 {
  if(this==SUN)
  {
   return "SUN";
  }

.......

省略周二到周六

.....
    else if(this==MON)
  {
   return "MON";
  }
  return null;
 }
}
class EnumText
{
 public static void main(String[] args)
 {
  WeekDay weekday=WeekDay.SUN;//获取星期值  
  System.out.println(weekday.nextDay());//打印下一天
 }
}

用枚举实现

和上面普通方法比较发现,代码简单了许多,但是原理一样。同时自动复写有了toString()方法

enum WeekDay//等同于上面的类
{

//枚举列表,下同
 SUN{
  public  WeekDay nextDay()//复写抽象方法,下同
  {
   return MON;
  }
 },
 MON{
  public  WeekDay nextDay()
  {
   return TUE;
  }
 },TUE{
  public  WeekDay nextDay()
  {
   return WED;
  }
 },WED{
  public  WeekDay nextDay()
  {
   return THI;
  }
 },THI{
  public WeekDay nextDay()
  {
   return FRI;
  }
 
 },FRI{
  public WeekDay nextDay()
  {
   return SAT;
  }
 },SAT{
  public WeekDay nextDay()
  {
   return SUN;
  }
 };
 private WeekDay(){}//定义构造方法
 public abstract WeekDay nextDay();//定义抽象方法。
}

 

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3