java枚举的实际应用案例

来源:互联网 发布:大淘客cms申请 编辑:程序博客网 时间:2024/05/16 03:02

java枚举知识点来自jdk5.0的版本带来的新特性,下面讲解的内容分别是:

 1.枚举类型
 
 2.枚举中的参数、方法
 
 3.遍历

在实际中对于一些基本固定的值用枚举比较好,当然实际项目中可以用到2中方式,还一种就是做数据字典,这种方式很方便的进行对常量的添加,修改比较灵活,涉及大的项目工程时候选用数据字典比较好;还一种方式就是使用java的枚举了,比较适合小的项目,定义数据集。

1.枚举类型

       java枚举是一种类型,怎么理解,例子如下:

 public enum ColorEnum {        red, green, yellow, blue;    }

        ColorEnum   blue = ColorEnum.blue; 
        System.out.println(blue.getClass().getName());
        System.out.println(blue.name());

打印结果如下:

com.gsafety.cloudframework.codegenerator.facade.entity.data.ColorEnum
blue


由java普通类改写情况如下:

package com.gsafety.cloudframework.codegenerator.facade.entity.data;public class ColorE {/** * 枚举名称 */private final String name = "";public String getName() {return name;}public static final ColorE blue = new ColorE() {public String getName() {return "blue";};};}

所以说枚举是静态实例类的一种对象类型,已经实例化过,可以获取里面的一些数据。


2.枚举参数、方法

      枚举中的参数是枚举类型上进行给自定义变量进行赋值的一个数据来源,用构造函数进行数据的封装,方法就是对每个赋值的数据进行获取。还一种方法就是对方法的重载,直接进行赋值,就不需要用到构造函数了。

package com.gsafety.cloudframework.codegenerator.facade.entity.data;public enum Gender {MAN(0,"男"), WOMEN(1,"女");private final int value;private final String name;Gender(int value, String name) {this.value = value;this.name = name;}public int getValue() {return value;}public String getName() {return name;}}

 public enum OrderState {        /** 已取消 */        CANCEL {public String getName(){return "已取消";}},        /** 待审核 */        WAITCONFIRM {public String getName(){return "待审核";}},        /** 等待付款 */        WAITPAYMENT {public String getName(){return "等待付款";}},        /** 正在配货 */        ADMEASUREPRODUCT {public String getName(){return "正在配货";}},        /** 等待发货 */        WAITDELIVER {public String getName(){return "等待发货";}},        /** 已发货 */        DELIVERED {public String getName(){return "已发货";}},        /** 已收货 */        RECEIVED {public String getName(){return "已收货";}};                public abstract String getName();    }



3.遍历

  枚举遍历常用方式:1.switch对单个枚举类型进行判断  2.for整体循环遍历

Gender flag = Gender.MAN;switch (flag) {case MAN:System.out.println(flag.getName() + "----------" + flag.getValue() + "-----------" + flag.ordinal());break;case WOMEN:System.out.println(flag.getName() + "----------" + flag.getValue() + "-----------" + flag.ordinal());break;default:break;}

//遍历枚举for(Gender g : Gender.values()) {System.out.println(g.getName() + "----------" + g.getValue() + "-----------" + g.ordinal());}

*ordinal()是枚举定义的枚举类型的下标数,默认从0开始。vlues()是获取枚举类型数组。




0 0