Java编程琐事(12)-Java枚举类型的使用

Java枚举类型的使用

Jdk1.4之前,还没有出现枚举类型,定义常量一般采用如下方式:

publicinterface JSONStatus {

    //  1.  成功,正确返回正确信息

    //  2.  用户还未登录

    //  3.  当前对象不存在

    //  4.  数据重复

    //  5.  不支持当前请求

    //  6. 用户没有权限修改

    //  7.  用户冻结

    //  8.  请求失败

    //  9.  匿名用户上传数超过限额

    // 10.  上传数据非法

    publicstaticintJSON_STATUS_SUCCEED = 1;

    publicstaticintJSON_STATUS_NOLOGIN = 2;

    publicstaticintJSON_STATUS_NOTEXISTOBJECT = 3;

    publicstaticintJSON_STATUS_DUPLICATE = 4;

    publicstaticintJSON_STATUS_REQUESTREJECT = 5;

    publicstaticintJSON_STATUS_NOHAVEPERM = 6;

    publicstaticintJSON_STATUS_FREEZE = 7;

    publicstaticintJSON_STATUS_FAIL = 8;

    publicstaticintJSON_STATUS_OVER = 9;

    publicstaticintJSON_STATUS_FORBIDDEN = 10;

    publicstaticintJSON_STATUS_PASSWD_NOTEMPTY = 11;

}

这些常量都是javaint类型的常量,如果加入一个新的值,需要重新检测是否越界,效率上不高;如果出现了无效值,还会抛出参数异常IllegalArgumentException

此外,还存在一个严重的问题,如果修改某个常量的值JSON_STATUS_FORBIDDEN=20,而有另外一个项目使用了这个常量却没有重新编译,它取到的值还会是10。这种潜在的错误很难被发现。

 

于是有人想到了如下的定义方法:

public class WeekDay {

         public static final WeekDay MONDAY = new WeekDay(1);

         public static final WeekDay TUESDAY = new WeekDay(2);

         public static final WeekDay WENSDAY = new WeekDay(3);

         public static final WeekDay THURSDAY = new WeekDay(4);

         public static final WeekDay FRIDAY = new WeekDay(5);

        

         public int getValue(){

                   return value;

         }

        

         private int value;

        

         private WeekDay(int i){

                   this.value = i;

         }

         //other methods...

}

 

自从jdk5以后出现了java枚举类型,真是千呼万唤始出来,大大方便了常量的定义,且高效,举例如下:

publicenum StatusEnum {

    //  1.  成功,正确返回正确信息

    //  2.  用户还未登录

    //  3.  当前对象不存在

    //  4.  数据重复

    //  5.  不支持当前请求

    //  6.  用户没有权限修改

    //  7.  用户冻结

    //  8.  请求失败

    //  9.  匿名用户上传数超过限额

    // 10.  上传数据非法

    JSON_STATUS_SUCCEED(1),

    JSON_STATUS_NOLOGIN(2),

    JSON_STATUS_NOTEXISTOBJECT(3),

    JSON_STATUS_DUPLICATE(4),

    JSON_STATUS_REQUESTREJECT(5),

    JSON_STATUS_NOHAVEPERM(6),

    JSON_STATUS_FREEZE(7),

    JSON_STATUS_FAIL(8),

    JSON_STATUS_OVER(9),

    JSON_STATUS_FORBIDDEN(10),

    JSON_STATUS_PASSWD_NOTEMPTY(11);

   

    //自定义属性

    privatefinalintvalue;

   

    //自定义构造方法

    StatusEnum(int value) {

        this.value = value;

    }

   

    /**

      * <p>Description:得到对应的value</p>

      * @return

      * @date 2012-7-17 下午3:39:02

     */

    publicint getValue() {

        returnvalue;

    }

   

    publicstaticvoid main(String[] args) {

        System.out.println(StatusEnum.JSON_STATUS_FORBIDDEN);

    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值