⛳ Java 枚举

⛳ 枚举

  • 类的对象只有有限个,确定的。 使用场景:

    • 星期: Monday(星期一)、 …、 Sunday(星期天)
    • 性别: Man(男)、 Woman(女)
    • 季节: Spring(春节)…Winter(冬天)
    • 支付方式: Cash(现金)、 WeChatPay(微信)、 Alipay(支付宝)、 BankCard(银行卡)、 CreditCard(信用卡)
    • 就职状态: Busy、 Free、 Vocation、 Dimission
    • 订单状态: Nonpayment(未付款)、 Paid(已付款) 、 Delivered(已发货)、Return(退货)、 Checked(已确认) Fulfilled(已配货)、
    • 线程状态:创建、就绪、运行、阻塞、死亡
  • 当需要定义一组常量时,强烈建议使用枚举类 使用说明:

    • 使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类
    • 枚举类的构造器只能使用 private 权限修饰符
    • 枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾)。列出的实例系统会自动添加 public static final 修饰
    • 必须在枚举类的第一行声明枚举类对象
  • Enum类的主要方法:

    • values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
    • valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。
    • toString():返回当前枚举类对象常量的名称

🎨 例子:使用常量表示线程状态

public class StateDem1 {

    public static void main(String[] args) {
        System.out.println(State.WAITING);
    }


    static class State {
        public static final String NEW = "NEW";
        public static final String RUNNABLE = "RUNNABLE";
        public static final String BLOCKED = "BLOCKED";
        public static final String WAITING = "WAITING";
        public static final String TIMED_WAITING = "TIMED_WAITING";
        public static final String TERMINATED = "TERMINATED";
//        public static final String TERMINATED2 = "TERMINATED2";

    }
}

🏭 例子:使用枚举表示线程状态

public class StateDem2 {

    int i;
    static int i1;


    public static void main(String[] args) {

        //获取一个枚举对象
        System.out.println(State.WAITING);
        System.out.println(State.valueOf("BLOCKED"));

        //循环枚举
        State[] states = State.values();
        for (int i = 0; i < states.length; i++) {
            System.out.println(states[i]);
        }
    }


    enum State {
        //一个类State,中有6个这个类的静态对象
        NEW,
        RUNNABLE,
        BLOCKED,
        WAITING,
        TIMED_WAITING,
        TERMINATED;
    }

}

📢 例子:订单状态的枚举

package org.example.$_enum;

import org.junit.Test;

/**
 *   订单状态: Nonpayment(未付款)、 Paid(已付款) 、 Delivered(已发货)、Return(退货)、 Checked(已确认) Fulfilled(已配货)、
 */
public class StateEnum {

    @Test
    public void test01(){
        OrderState[] values = OrderState.values();
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i] + "-" + values[i].getValue() + "-" + values[i].getCode());
        }
    }

    public enum OrderState {
        //static final OrderState NON_PAYMENT = new OrderState(1, "未付款")
        NON_PAYMENT(1, "未付款"),
        PAID(2, "已付款"),
        DELIVERED(3, "已发货"),
        RETURN(4, "退货"),
        CHECKED(5, "已确认"),
        FULFILLED(6, "已配货");


        private OrderState(int code, String value) {
            this.code = code;
            this.value = value;
        }

        private int code;
        private String value;

        public String getValue() {
            return value;
        }

        public int getCode() {
            return code;
        }
    }

}

结果:

NON_PAYMENT-未付款-1
PAID-已付款-2
DELIVERED-已发货-3
RETURN-退货-4
CHECKED-已确认-5
FULFILLED-已配货-6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值