尚硅谷Java培训之枚举
8.1.1 什么是枚举
类的对象只有有限个的、确定的
例如:
星期:Monday(星期一)......Sunday(星期天)
性别:Man(男)、Woman(女)
月份:January(1月)......December(12月)
季节:Spring(春节)......Winter(冬天)
七彩标准色:Red(红)......Purple(紫)
支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)
就职状态:Busy、Free、Vocation、Dimission
订单状态:Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配货)、Delivered(已发货)、Return(退货)、Checked(已确认)
8.1.2 如何定义枚举类型
要点:
- 私有化类的构造器,保证不能在类的外部创建其对象
- 在类的内部创建枚举类的实例。声明为:public static final
JDK1.5之前:
public class TestEnumType {
public static void main(String[] args) { Season s = Season.SPRING; System.out.println(s); }
} class Season{ public static final Season SPRING = new Season(); public static final Season SUMMER = new Season(); public static final Season AUTUMN = new Season(); public static final Season WINTER = new Season();
private Season(){ }
public String toString(){ if(this == SPRING){ return "SPRING"; }else if(this == SUMMER){ return "SUMMER"; }else if(this == AUTUMN){ return "AUTUMN"; }else{ return "WINTER"; } } } |
JDK1.5之后:
- 使用 enum 定义的枚举类默认继承了lang.Enum类。因此不能再继承其他类。
- 枚举类的所有构造器只能使用 private 访问控制符
- 枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾),必须在枚举类的第一行声明枚举类对象。列出的实例系统会自动添加 public static final 修饰
- JDK 1.5 之后可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字
package com.enumtype.after15;
public class TestEnumType {
public static void main(String[] args) { Season s = Season.SPRING; switch(s){ case SPRING: System.out.println("春暖花开");break; case SUMMER: System.out.println("夏日炎炎");break; case AUTUMN: System.out.println("秋高气爽");break; case WINTER: System.out.println("白雪皑皑");break; } }
} enum Season{ SPRING,SUMMER,AUTUMN,WINTER; } |