1.枚举类型的特点:
      1. 是一个类,本身提供了一些方法
     2.继承了Enum类,所以不能继承其他类
     3.主要作用,定义个新的数据类型(和Class 稍微有些区别)
    4.values()方法 比较特殊。
   5.实现了 Comparable<E>, Serializable 2个接口
2.应用场景:
    一般应用在需要一个新的数据类型,而且该数据内容相对固定,涉及到的业务逻辑不复杂的情况。
3.示例代码
  
package enumerated.randy;
/**
* @param args
*/


public class EnumTest {
  // 定义一个enum
    enum Color{
        
     // 定义枚举内容
      RED("红色"),GREEN("绿帽子"),YELLOW("×××文化");        
    //定义另外一个属性
      private String desp;
        
      // 注意该构造方法是私有的
      private Color(String desp){
        this.desp = desp;        
      }
      // 定义另外一个方法
      public String getDesp(){
        return this.desp+":"+this.name();
      }
        

  }
    
    //switch 中的 枚举类型
  public void change(){
    switch(favorate){
    case RED:    favorate = Color.GREEN;
    break;
    case GREEN : favorate = Color.YELLOW;
    break;
    case YELLOW :favorate = Color.RED;
    break;
    }
    
  }
    
  public Color favorate = Color.RED;
  public static void main(String[] args) {

    System.out.println("----------------枚举一些常用的方法---------------");
    for(Color c :Color.values()){
      System.out.println(c.getClass());
      System.out.println(c.getDeclaringClass());
      System.out.println(());//RED
      System.out.println(c.compareTo(Color.RED));
      System.out.println(c.ordinal());
      System.out.println(c.equals(Color.RED));
      System.out.println(c == Color.RED);
    }

System.out.println("----------------测试枚举类型中定义的方法-----");    
    for(Color c :Color.values()){
      System.out.println(c.getDesp());
    }

System.out.println("-------------测试enumswitch 用法----------------------");
    EnumTest test = new EnumTest();
    Color color = Color.RED;
    for(int i=0;i<=7;i++){
      test.change();
      System.out.println(test.favorate.getDesp());
    }
  }

}
 
枚举一些常用的方法
class enumerated.randy.EnumTest$Color
class enumerated.randy.EnumTest$Color
RED
0
0
true
true
class enumerated.randy.EnumTest$Color
class enumerated.randy.EnumTest$Color
GREEN
1
1
false
false
class enumerated.randy.EnumTest$Color
class enumerated.randy.EnumTest$Color
YELLOW
2
2
false
false
测试枚举类型中定义的方法-----
红色:RED
绿帽子:GREEN
×××文化:YELLOW
测试enum 的 switch 用法
绿帽子:GREEN
×××文化:YELLOW
红色:RED
绿帽子:GREEN
×××文化:YELLOW
红色:RED
绿帽子:GREEN
×××文化:YELLOW
 
 
 
通过代码我们可以知道:
  枚举类型: 除了可以定义【数据内容】之外,还可以添加另外的属性“desp" 和其他方法“getDesp()”.注意,在“数据内容”后面有“;”
2.可以有构造方法,但是构造方法不能是public的,不管是有参数的,还是无参数的
3.从Enum 类 继承了若干方法,方便Enum 数据的访问。
4.values() 是一个静态方法,但是在Enum中不存在,只有一个带参数的values(Class class)。也就是说,values方法是在JVM 编译的时候添加的。
5. 注意 在switch 的case语句中, 
  case RED:  favorate = Color.GREEN;
  break;
不能写成   case Color.RED:  favorate = Color.GREEN;
这一点有点蹊跷。 大概是switch(color)  已经确定了是Color 数据类型了。