Java 枚举到底是什么

枚举类,用Enum关键字,其本质也是一个Class

例子:

public enum CC {
  ERROR1(1, "参数异常"),
  ERROR2(2, "查不到数据");

  private final Integer code;
  private final String msg;

  public Integer getCode() {
      return this.code;
  }

  public String getMsg() {
      return this.msg;
  }

  CC(Integer code, String msg) {
      this.code = code;
      this.msg = msg;
  }
}

用javap Class 反汇编工具查看实际执行情况
在class文件下,cmd命令执行 javap CC

public final class com.sy.CC extends java.lang.Enum<com.sy.CC> {
  public static final com.sy.CC ERROR1;
  public static final com.sy.CC ERROR2;
  public static com.sy.CC[] values();
  public static com.sy.CC valueOf(java.lang.String);
  public java.lang.Integer getCode();
  public java.lang.String getMsg();
  static {};
}

可以看出,枚举实际上是一个final类型的class,里面有静态实例,实例是在静态代码块里面初始化的,需要构建私有构造方法。枚举日常项目中用来返回给前端错误信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值