枚举

// Java
enum MyColor{
  RED("Hot", 4), BLUE("SAD",8);
  
  private String mood;
  public String getMood{
    return mood;
  }
  private int index;
  public int getIndex(){
    return index;
  }
  private MyColor(String mood, int index){
    this.mood = mood;
    this.index = index;
  }
}
System.out.println(MyColor.RED.getMood());

  小结:

     1. 定义枚举类型本质上就是在定义带final修饰符的Enum<E>的子类;

     2. 枚举值本质为第1点所定义的类的类常量;

     3. 枚举值的ordinal值由其定义时的排序决定,并且在编译时已经被设置好了。

 

public enum MyColor{
RED, BLUE(){
@Override
public boolean getFlag(){
return false;
}
};
public boolean getFlag(){
return true;
}
}
// 调用
System.out.println(MyColor.RED.getFlag()); // 显示true
System.out.println(MyColor.BLUE.getFlag()); // 显示false

 

可以看到枚举值RED和BLUE同一个方法具有不同的行为。其实这是通过匿名内部类的方式实现的,BLUE的类型为MyColor$1 extends MyColor,而RED的类型为MyColor。

 

使用接口组织枚举                          

复制代码
public interface Food {
        enum Coffee implements Food {
            BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO
        }

        enum Dessert implements Food {
            FRUIT, CAKE, GELATO
        }
    }
复制代码
 
posted on 2015-02-23 16:30  Simle  阅读(221)  评论(0编辑  收藏  举报