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 }
原文地址:https://www.cnblogs.com/QQ931697811/p/4971717.html