目录
- ⛳ 枚举
- **🎨 例子:使用常量表示线程状态**
- 🏭 例子:使用枚举表示线程状态
- 📢 例子:订单状态的枚举
⛳ 枚举
-
类的对象只有有限个,确定的。 使用场景:
-
- 星期: 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 {@Testpublic 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