Java中enum的本质

在平时的开发中,经常需要用到枚举,其实枚举enum 定义了一个特殊的类,这个类继承自java.lang.Enum,不过这是由编译程序处理的,直接写一个类继承Enum类会被编译程序拒绝。
来看一段代码:

public enum Action{
    UP,RIGHT,DOWN,LEFT
}

在编译之后,会生成一个Action.class文件,反编译后,观察程序代码,就可以了解enum的本质内容:

public final class Action extends Enum{
    private Action(String s,int i){
        super(s,i);
    }
    public static final Action UP;
    public static final Action RIGHT;
    public static final Action DOWN;
    public static final Action LEFT;
    ...
    static{
        UP = new Action("UP",0);
        RIGHT = new Action("RIGHT",1);
        DOWN = new Action("DOWN",2);
        LEFT = new Action("LEFT",3);
    }
}

可以看到,enum定义的Action实际上是个类,而enum中列举的UP,RIGHT,DOWN,LEFT常数,实际上是public static final 类型的,且为Action实例,由于构造函数权限为private所以你无法通过new来直接实例化Action,只有Action类中才可以实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值