JAVA 枚举类实现键值对常量

160 阅读1分钟

1. 创建枚举类

package com.example.common;

public enum Status {
    WAIT_PAY(100, "待支付"),
    PAID(200, "已支付"),
    WAIT_SHIP(300, "待发货"),
    SHIPPED(400, "已发货"),
    SHIPPING(500, "运输中"),
    RECEIVED(600, "已收货");

    private Integer code;
    private String name;
    Status(Integer code, String name){
        this.code = code;
        this.name = name;
    }

    public void setCode(Integer code){
        this.code = code;
    }

    public Integer getCode(){
        return code;
    }

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

}

2. 使用枚举类

package com.example;

import com.example.common.Status;

public class Demo1 {
    private Status status = Status.WAIT_PAY;

    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();
        demo1.testEnum();
    }

    public void testEnum(){
        status = Status.SHIPPED;

        switch (status){
            case WAIT_PAY:
                System.out.printf("这是 WAIT_PAY 的 name 和 code:%s(%d) \n", status.getName(), status.getCode());
                break;
            case PAID:
                System.out.printf("这是 PAID 的 name 和 code:%s(%d) \n", status.getName(), status.getCode());
                break;
            case WAIT_SHIP:
                System.out.printf("这是 WAIT_SHIP 的 name 和 code:%s(%d) \n", status.getName(), status.getCode());
                break;
            case SHIPPED:
                System.out.printf("这是 SHIPPED 的 name 和 code:%s(%d) \n", status.getName(), status.getCode());
                break;
            case SHIPPING:
                System.out.printf("这是 SHIPPING 的 name 和 code:%s(%d) \n", status.getName(), status.getCode());
                break;
            case RECEIVED:
                System.out.printf("这是 RECEIVED 的 name 和 code:%s(%d) \n", status.getName(), status.getCode());
                break;
        }
    }

}

3. 枚举类的常用方法

方法名称描述
values()以数组形式返回枚举类型的所有成员
ordinal()获取枚举成员的索引位置
valueOf()将普通字符串转换为枚举实例
compareTo()比较两个枚举成员在定义时的顺序