一,枚举的引出

设定一个场景,业务需要我们的一个进件有若干状态,怎么表示这些状态呢?大部分可能会直接用static final 表示一个int类型的变量。如下:

    //订单状态
    public static final int ORDER_DEPOT_UNPAY = 0;
    public static final int ORDER_DEPOT_PAID = 1;
    public static final int ORDER_DEPOT_TIMOUT = 2;

然后接下来的业务逻辑就是用这些常量值来带指各种基本业务含义。但是这样的弊端也有如下

1. 它只是一个int类型的数据而已,如果我们定义了别的变量然后数字跟他一样怎么办?比如

    public static final int ORDER_LOGISTICS_READY = 0;
    public static final int ORDER_LOGISTICS_TRANSPORT = 1;
    public static final int ORDER_LOGISTICS_ARRIVED = 2;

我想用上面三个状态的一个类型,而错误的输入称了下面的一个类型怎么办?,因为在业务实现上他们最终展示的都是一个数字,还TM一样!。

2. 这些变量我们只是一个编号,获得编号后如果我想知道具体含义怎么办?你还要构造一个编号跟含义的映射表。

3. 这些常量是static final类型的啊,在类加载的时候,如果有些地方使用了这样常量,在类加载的间