Java 枚举

/*
* 枚举是JDK 1.5 引入 在java.lang中
* 常用的方法 有int CompareTo(E e) 比较此枚举与指定对象的顺序
* Class<E> getDeclaringClass() 返回与此枚举类型对应的Class 对象
* String name() 返回枚举对象的名称 在枚举申明中对其进行申明
* int ordinal() 返回枚举常量的序数
* String toString()
* Static <T extends Enum<T>> T valueOf(Class<T> enumType,String name) 返回带指定名称的指定枚举类型的枚举常量

可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承)。
*/

 1 package com.test.Enum;  2 
 3 public class EnumDemo {  4 
 5     public enum ColorEnum {  6         // 普通枚举
 7  red, green, black, pink;  8  }  9 
 10     public enum SeasonEnum {  11         // 枚举需要写在最前面 否则编译出错 枚举可以像普通类一样 带有属性和方法
 12  spring, summer, autumn, winter;  13         private static final String position = "test";  14 
 15         public static SeasonEnum getSeason() {  16             if ("test".equals(position)) {  17                 return spring;  18             } else {  19                 return winter;  20  }  21  }  22  }  23 
 24     public enum Gender {  25         // 通过括号赋值,并且必须带有一个参数构造方法和一个属性 另外一个方法 否则编译出错
 26         MAN("MAN"), WOMAN("WOMAN");  27 
 28         private final String Value;  29 
 30         private Gender(String Value) {  31             this.Value = Value;  32  }  33 
 34         public String getValue() {  35             return Value;  36  }  37  }  38 
 39     public enum OrderState {  40         // 带抽象方法的枚举
 41  CANCEL {  42             public String getName() {  43                 return "已取消";  44  }  45  },  46  WAITING {  47             public String getName() {  48                 return "待审核";  49  }  50  },  51  WAITPAMENT {  52             public String getName() {  53                 return "待支付";  54  }  55  },  56  ADMEASUREPRODUCT {  57             public String getName() {  58                 return "正在配送";  59  }  60  },  61  WAITDELIVER {  62             public String getName() {  63                 return "等待发货";  64  }  65  },  66  DELIVERED {  67             public String getName() {  68                 return "已发货";  69  }  70  },  71  RECEIVED {  72             public String getName() {  73                 return "已收货";  74  }  75  };  76         public abstract String getName();  77  }  78 
 79     public static void main(String[] args) {  80         // 枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值;
 81         ColorEnum colorEnum = ColorEnum.black;  82         switch (colorEnum) {  83         case red:  84             System.out.println("color is red");  85             break;  86         case green:  87             System.out.println("color is green");  88             break;  89         case black:  90             System.out.println("color is black");  91             break;  92         case pink:  93             System.out.println("color is pink");  94             break;  95         default:  96             break;  97  }  98         // 遍历枚举
 99         System.out.println("遍历ColorEnum中的值:"); 100         for (ColorEnum colorEnum2 : ColorEnum.values()) { 101  System.out.println(colorEnum2); 102  } 103 
104         // 获取枚举的个数
105         int mount = ColorEnum.values().length; 106         if (mount > 0) { 107             System.out.println("枚举有" + mount + "个"); 108  } 109 
110         // 获取每个枚举值 所在位置的索引
111         System.out.println("红色所在位置索引:" + ColorEnum.red.ordinal()); 112         System.out.println("黑色所在位置的索引:" + ColorEnum.black.ordinal()); 113         System.out.println("粉色所在位置的索引:" + ColorEnum.pink.ordinal()); 114         System.out.println("绿色所在位置的索引:" + ColorEnum.green.ordinal()); 115 
116         System.out.println("枚举默认实现了Comparable接口:"); 117  System.out.println(ColorEnum.red.compareTo(ColorEnum.green)); 118 
119         System.out.println("季节为:" + SeasonEnum.getSeason()); 120 
121         System.out.println("=============="); 122         for (Gender gender : Gender.values()) { 123  System.out.println(gender.Value); 124  } 125 
126         System.out.println("========="); 127         for (OrderState orderState : OrderState.values()) { 128  System.out.println(orderState.getName()); 129  } 130  } 131 
132 }

 

你可能感兴趣的:(Java 枚举)