自定義列舉類的使用以及理解
阿新 • • 發佈:2021-06-19
1、列舉類的理解
/** * 一、列舉類的理解 * 1)列舉是什麼意思 一一列舉出來 有限的 確定個數的 * 2)列舉類的理解:當前類的物件是有限個的、確定的 能一一的列舉出來,我們稱此類是列舉類, 這裡例如 季節這個類就 四個季節, Season 就四個物件 Season * 就是列舉類 * * 3)當需要定義一組常量時強烈推薦使用列舉類 * 4)如果列舉類中只有一個物件,那麼可以看成是單例模式的實現方式 * * 二、建立列舉類的方式 * 1)自定義列舉類 * 2)使用Enum關鍵字 * 三、Enum 類中常用的方法 * 1)values()方法返回當前列舉類的物件陣列 * 2) valueOf(String str) 可以把一個字串轉化為對應的列舉類物件,要求字串必須是和物件的名字一樣 * * 四、使用Enum關鍵字定義的列舉類實現介面 * 1) 實現介面在Enum 類中重寫抽象方法 * 2) 列舉類的物件各自重寫介面的方法 * */
2、自定義列舉類
2.1 傳統的方式自定義列舉類
public class Season { //1)私有屬性 private final String seasonName; private final String seasonDes; //2)私有話構造器 這裡不能公有 否則 Season的物件就有很多個了,不能-- 的列舉出來了 private Season(String seasonName,String seasonDes){ this.seasonDes = seasonDes; this.seasonName = seasonName; } //3)提供當前列舉類的多個物件 用 public static final修飾 public static final Season SPRING = new Season("spring","春暖花開"); public static final Season SUMMER = new Season("summer","夏日炎炎"); public static final Season AUTUMN = new Season("autumn","秋高氣爽"); public static final Season WINTER = new Season("winter","冰天雪地"); public String getSeasonName() { return seasonName; } public String getSeasonDes() { return seasonDes; } @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDes='" + seasonDes + '\'' + '}'; } }
2.2使用Enum關鍵字來建立列舉類
/** * * * NonPayment //未支付 * Paid //已支付 * * Return //已退貨 * * 定義的列舉類 繼承的是 class java.lang.Enum * */ public enum Order implements Info{ // public static fianl Order NONPAYMENT = 一定不要寫了,多個物件之間 用逗號分割,最後一個用分號就行。 //1)提供當前列舉類的物件 必須先放到第一位 NONPAYMENT("NonPayment"){ public void show(){ System.out.println("NonPayment"); } }, PAID("Paid"){ public void show(){ System.out.println("Paid"); } }, RETURNED("Return"){ public void show(){ System.out.println("Return"); } }; //2)私有屬性 private String status; //訂單的狀態 //3)私有構造器 private Order(String status){ this.status = status; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } // public void show(){ // System.out.println("====info===="); // } }
3、Enum 類中常用的方法
1)values()方法返回當前列舉類的物件陣列
2) valueOf(String str) 可以把一個字串轉化為對應的列舉類物件,要求字串必須是和物件的名字一樣
Order nonPayment = Order.NONPAYMENT; System.err.println(Order.class.getSuperclass()); System.out.println(nonPayment); System.out.println("======================="); Order[] orders = nonPayment.values(); for (int i = 0; i < orders.length; i++) { System.out.println(orders[i]); } Order RETURNED = Order.valueOf("RETURNED");
4、使用Enum關鍵字定義的列舉類實現介面
1) 實現介面在Enum 類中重寫抽象方法
2) 列舉類的物件各自重寫介面的方法
/** * * * NonPayment //未支付 * Paid //已支付 * * Return //已退貨 * * 定義的列舉類 繼承的是 class java.lang.Enum * */ public enum Order implements Info{ // public static fianl Order NONPAYMENT = 一定不要寫了,多個物件之間 用逗號分割,最後一個用分號就行。 //1)提供當前列舉類的物件 必須先放到第一位 NONPAYMENT("NonPayment"){ public void show(){ System.out.println("NonPayment"); } }, PAID("Paid"){ public void show(){ System.out.println("Paid"); } }, RETURNED("Return"){ public void show(){ System.out.println("Return"); } }; //2)私有屬性 private String status; //訂單的狀態 //3)私有構造器 private Order(String status){ this.status = status; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } // public void show(){ // System.out.println("====info===="); // } }