【Java 中Enum 的扩展】

Java 原生的Enum没有办法与C中的Enum一样随意指定成员的值,在一些C语言直接与Java 通信的场景中会比较麻烦,所以我对Java 原有的Enum进行扩展来达到随意指定成员值的目的:

  public class Test {

  public static void main(String args[]){

  CMD[] name = CMD.values();

  for (CMD cmd : name) {

  System.out.println("i:" + cmd.value());

  }

  }

  public static enum CMD{

  e_CMD_MIN(900),

  e_CMD_SET_PORT(e_CMD_MIN.value),

  e_CMD_GET_PORT,

  e_CMD_SET_POS,

  e_CMD_MAX,

  e_CMD_RET_MIN(1000),

  e_CMD_URGENT_MSG(e_CMD_RET_MIN.value),

  e_CMD_SET_POWER,

  e_CMD_GET_POWER,

  e_CMD_RET_MAX;

  private final int value;

  private static int count = 0;

  private static void set(int value){

  count = value;

  }

  private static int prv(){

  return count;

  }

  private static int next(){

  return count++;

  }

  //默认构造函数,value依次递增

  CMD(){

  this.value = next();

  //this.value = count++;

  };

  //构造函数:直接指定value的值

  CMD(int value){

  //检查新指定的value是否合法,非法时抛出异常

  if((value + 1) < prv()){

  try {

  throw new Exception(this.name()

  + ":Incorrect value,previous is " + prv()

  + ",current is " + value);

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  this.value = value;

  set(value + 1);

  }

  //获取每个成员的值

  public final int value(){

  return value;

  }

  }

  }

转载于:https://www.cnblogs.com/qq1287527359/p/3300362.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值