A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小布袋 中级黑马   /  2014-9-20 11:14  /  753 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。在java中如何更好的使用这些“数据集”呢,这是枚举就“登场”了。
       例如,周一到周日这七个数据元素组成了一个周的“数据集”。一年四季中的春夏秋冬这四个季节等等。下面就枚举的用法以代码的形式罗列出来,望对大家有帮助。
  1. /**
  2. * 枚举用法详解
  3. */
  4. public class TestEnum {
  5.           public enum ColorEnum {
  6.           red, green, yellow, blue;
  7.           }

  8. /**
  9. * 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
  10. */
  11.         public enum SeasonEnum {
  12.         //注:枚举写在最前面,否则编译出错
  13.              spring, summer, autumn, winter;
  14.              private final static String position = "test";

  15.              public static SeasonEnum getSeason() {
  16.                  if ("test".equals(position))
  17.                         return spring;
  18.                 else
  19.                         return winter;
  20.            }
  21.       }

  22. /**
  23. * 性别
  24. * 实现带有构造器的枚举
  25. */
  26.         public enum Gender{
  27.         //通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
  28.         //赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
  29.            MAN("MAN"), WOMEN("WOMEN");
  30.            private final String value;
  31.         //构造器默认也只能是private, 从而保证构造函数只能在内部使用
  32.            Gender(String value) {
  33.                this.value = value;
  34.            }
  35.            public String getValue() {
  36.                return value;
  37.            }
  38.         }

  39. /**
  40. * 订单状态
  41. * 实现带有抽象方法的枚举
  42. */
  43.         public enum OrderState {
  44.            /** 已取消 */
  45.           CANCEL {public String getName(){return "已取消";}},
  46.           /** 待审核 */
  47.           WAITCONFIRM {public String getName(){return "待审核";}},
  48.           /** 等待付款 */
  49.           WAITPAYMENT {public String getName(){return "等待付款";}},
  50.           /** 正在配货 */
  51.           ADMEASUREPRODUCT {public String getName(){return "正在配货";}},
  52.           /** 等待发货 */
  53.           WAITDELIVER {public String getName(){return "等待发货";}},
  54.           /** 已发货 */
  55.           DELIVERED {public String getName(){return "已发货";}},
  56.           /** 已收货 */
  57.           RECEIVED {public String getName(){return "已收货";}};
  58.           public abstract String getName();
  59.         }

  60.     public static void main(String[] args) {
  61.     //枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值
  62.          ColorEnum colorEnum = ColorEnum.blue;
  63.           switch (colorEnum) {
  64.               case red:
  65.                      System.out.println("color is red");
  66.                      break;
  67.               case green:
  68.                      System.out.println("color is green");
  69.                      break;
  70.               case yellow:
  71.                      System.out.println("color is yellow");
  72.                      break;
  73.               case blue:
  74.                      System.out.println("color is blue");
  75.                      break;
  76.      }

  77.               //遍历枚举
  78.               System.out.println("遍历ColorEnum枚举中的值");
  79.               for(ColorEnum color : ColorEnum.values()){
  80.                  System.out.println(color);
  81.               }

  82.               //获取枚举的个数
  83.               System.out.println("ColorEnum枚举中的值有"+ColorEnum.values().length+"个");
  84.               //获取枚举的索引位置,默认从0开始
  85.               System.out.println(ColorEnum.red.ordinal());//0
  86.               System.out.println(ColorEnum.green.ordinal());//1
  87.               System.out.println(ColorEnum.yellow.ordinal());//2
  88.               System.out.println(ColorEnum.blue.ordinal());//3

  89.               //枚举默认实现了java.lang.Comparable接口
  90.               System.out.println(ColorEnum.red.compareTo(ColorEnum.green));//-1

  91.               //-------------错误提示-------------
  92.               System.out.println("===========");
  93.               System.err.println("季节为" + SeasonEnum.getSeason());


  94.               //---------遍历性别,并输出-----
  95.               System.out.println("===========");
  96.               for(Gender gender : Gender.values()){
  97.                  System.out.println(gender.value);
  98.               }

  99.               //--------遍历订单状态,并输出------
  100.               System.out.println("===========");
  101.               for(OrderState order : OrderState.values()){
  102.                    System.out.println(order.getName());
  103.               }
  104.       }
  105. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马