论坛首页 入门技术论坛

枚举的独特使用方法

浏览 2122 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-01-24  

   例如,定义表示一周内每一天的常量(简单起见,只列出前三天),这是枚举最常用的方式。

 

 

 public enum Week{

   MONDAY,

   TUSEDAY,

   WEDNESDAY

 }

 

   假设要为一周内的每一天定义一个类,其中包含两个方法:getDayOfWeek和getName,分别返回这一天是这周的第

 

几天和这一天的名字(如"星期一”、“星期二”)。按一般的做法,需要定义一个抽象类或接口,以及7个子类(分别对应一

 

周内的每一天),很可能还需要一个包含这7个类的对象引用的类。例如:

 

 

 public abstract class WeekDay{

    public abstract int getDayOfWeek();

    public abstract String getName();

  }

  public class MonDay{

    public int getDayOfWeek(){
       return 1;

  }

   public String getName(){
      return "星期一“;

   }

 }

  public class Week{

    public final static WeekDay MON = new MonDay();

}

 

    这样会增加很多的类,此时使用枚举是一个不错的解决办法。

 

 

public enum Week{

   MonDay{

     public int getDayOfWeek(){
        return 1;
     }

     public String getName(){
        return "星期一“;
    }

   TuseDay{

     public int getDayOfWeek(){
        return 2;

    }

   public String getName(){
      return "星期二“;

  }

   public abstract int getDayOfWeek();

   public abstract String getName();

 }
 

    这样一个枚举就搞定了。 

 

    我觉得这种方法很适用于单实例的具有常量特性的简单对象。

   发表时间:2010-01-26  

第一次见到枚举这么写,有点画蛇添足的感觉

 

public enum Week{   
   MONDAY(1, "星期一"),
   SUNDAY(7, "星期日");

   private final int dayOfWeek;
   private final String name;

  Week(int dayOfWeek, String name){
    this.dayOfWeek = dayOfWeek;
    this.name = name;
  }

  public int getDayOfWeek(){
    return this.dayOfWeek;  
  }

  public String getName(){
    return this.name;
  }
}

 这才是比较通用的做法

0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics