Java enum常见的用法

248 阅读2分钟

一,常量定义

  public enum WeekDay {
      SUN, MON, TUE, WED, THT, FRI, SAT
  }

二,swich

  public enum WeekDay {
      SUN, MON, TUE, WED, THT, FRI, SAT
  }

  public static void main(String args[]){
      WeekDay weekday = WeekDay.SUN;
          switch(weekday){
              case SUN:
                  System.out.println("今天是星期一");
                  break;
              ...
               default:
                  System.out.println("这周过完了。。。");
          }
  }
  
  

三,向枚举添加新方法

   public enum week {
      SUN("星期一", 1), MON("星期二", 2), TUE("星期三", 3), WED("星期四", 4), THT("星期五", 5), FRI("星期六", 6), SAT("星期天", 7);

      // 成员变量
      private String name;
      private int index;

      // 构造方法(删除构造函数会报错)
      private week(String name, int index) {
          this.name = name;
          this.index = index;
      }

      // 普通方法
      public static void getAllName() {
          for (week w : week.values())
              System.out.println(w.name + ": " + w.index);
            //或使用System.out.println(w.toString()); 
      }

      // get set 方法
      public String getName() {
          return name;
      }

      public void setName(String name) {
          this.name = name;
      }

      public int getIndex() {
          return index;
      }

      public void setIndex(int index) {
          this.index = index;
      }
      
       @Override
    public String toString() {
        return "week{" +
                "name='" + name + '\'' +
                ", index=" + index +
                '}';
    }
  }

  public static void main(String args[]){
      week.FRI.setName("星期六过了");
      week.getAllName();

  }
  
执行结果:
星期一: 1
星期二: 2
星期三: 3
星期四: 4
星期五: 5
星期六过了: 6
星期天: 7   
  

  
  

四,实现接口

  public interface Thing {
    public void print();
    public String getInfoName();
    public Integer getInfoIndex();
}

public enum week implements Thing{
    SUN("星期一", 1), MON("星期二", 2), TUE("星期三", 3), WED("星期四", 4), THT("星期五", 5), FRI("星期六", 6), SAT("星期天", 7);

    //接口方法
    @Override
    public void print(){
     //System.out.println(this.name + ": " + this.index);
       System.out.println(getInfoName() + ": " + getInfoIndex());
        
    }

    //接口方法
    @Override
    public String getInfoName(){
        return this.name;
    }

    //接口方法
    @Override
    public Integer getInfoIndex(){
        return this.index;
    }


    // 成员变量
    private String name;
    private int index;

    // 构造方法
    private week(String name, int index) {
        this.name = name;
        this.index = index;
    }

    // 普通方法
    public static void getAllName() {
        for (week w : week.values())
            System.out.println(w.toString());
    }



    // get set 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    @Override
    public String toString() {
        return "week{" +
                "name='" + name + '\'' +
                ", index=" + index +
                '}';
    }
}

public static void main(String args[]){
    week.FRI.setName("星期六过了");
    week w = week.FRI;
    w.print();
}   


运行结果:
星期六过了: 6

 

五,接口组织枚举

  public interface Food { 
      enum Coffee implements Food{ 
          BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO 
      } 
      enum Dessert implements Food{ 
          FRUIT, CAKE, GELATO 
      } 
  }
  
  public static void main(String args[]){
    for (Food.Coffee c : Food.Coffee.values())
        System.out.println(c);
    System.out.println("-----------------------------------------");
    for (Food.Dessert d : Food.Dessert.values())
        System.out.println(d);

  }
  
运行结果:
BLACK_COFFEE
DECAF_COFFEE
LATTE
CAPPUCCINO
-----------------------------------------
FRUIT
CAKE
GELATO
  
  

六,枚举集合

   //具体枚举方法依旧使用上面的week
   public static void main(String[] args) {
        EnumSet<week> w = EnumSet.noneOf(week.class);
        w.add(week.MON);
        System.out.println("EnumSet中的元素:" + w);
        w.remove(week.MON);
        System.out.println("EnumSet中的元素:" + w);
        w.addAll(EnumSet.complementOf(w));
        System.out.println("EnumSet中的元素:" + w);
        w.removeAll(EnumSet.range(week.FRI, week.SAT));
        System.out.println("EnumSet中的元素:" + w);
  }

执行结果:
EnumSet中的元素:[week{name='星期二', index=2}]
EnumSet中的元素:[]
EnumSet中的元素:[week{name='星期一', index=1}, week{name='星期二', index=2}, week{name='星期三', index=3}, week{name='星期四', index=4}, week{name='星期五', index=5}, week{name='星期六', index=6}, week{name='星期天', index=7}]
EnumSet中的元素:[week{name='星期一', index=1}, week{name='星期二', index=2}, week{name='星期三', index=3}, week{name='星期四', index=4}, week{name='星期五', index=5}]

 



推荐一篇文章,讲的很好,推荐阅读: www.cnblogs.com/qing-gee/p/…