java枚举类

前言

对于枚举我们见怪不怪了,很简单把以前申明类的class改为enum,类体里逗号分隔 各个枚举量就完成了,如java日志级别枚举类。

 public enum Level {
        ERROR,
        WARN,
        INFO,
        DEBUG,
        TRACE;
    }

枚举常量严格按照声明时顺序ordinal依次为ERROR:0,WARN:1,INFO:2,DEBUG:3,TRACE:4
反编译枚举看看它如何被编译的:

public final class Level
extends Enum<Level> {
    public static final /* enum */ Level ERROR = new Level();
    public static final /* enum */ Level WARN = new Level();
    public static final /* enum */ Level INFO = new Level();
    public static final /* enum */ Level DEBUG = new Level();
    public static final /* enum */ Level TRACE = new Level();
    private static final /* synthetic */ Level[] $VALUES;

    public static Level[] values() {
        return (Level[])$VALUES.clone();
    }

    public static Level valueOf(String name) {
        return Enum.valueOf(Level.class, name);
    }

    private Level() {
    }

    private static /* synthetic */ Level[] $values() {
        return new Level[]{ERROR, WARN, INFO, DEBUG, TRACE};
    }

    static {
        $VALUES = Level.$values();
    }
}
  1. 继承了Enum类,所以枚举无法被继承,也就防止了增加扩展枚举的可能。
  2. private构造器,避免了实列化,保证枚举数据一致性。

为什么要用枚举

  • 常量可以代替枚举,但是如果常量中定义不同名称但值相同的常量,虽然语法上没有问题,但这个相同值很容易引起混淆。
  • 枚举可以通过方法、构造器来携带更多的信息。常量类就没这么灵活了(常量类型设置为带属性的自定义类,这时需要保证自定义类安全性),灵活性就受限。
    这样使用简单明了,省区了纷繁复杂的编码。安全简洁。
public enum Level {
    ERROR("错误",11),
    WARN("警告",12),
    INFO("信息",13),
    DEBUG("调试",14),
    TRACE("跟踪",15);

   Level(String des, int code) {
        this.code = code;
        this.description = des;
    }
    private int code;
    private String description;

    public int getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值