投資 3 萬億元、制定“K 戰略”,起底韓國的晶片製造野心!
阿新 • • 發佈:2021-05-21
一、列舉類的使用
- 列舉類的理解:類的物件只有有限個,確定的。我們稱此類為列舉類。
- 當需要定義一組常量時,強烈建議使用列舉類。
- 如果列舉類中只有一個物件,則可以作為單例模式的實現方式。
二、如何定義列舉類
方式一:jdk5.0之前,自定義列舉類
//自定義列舉類 class Season { //1.宣告Season物件的屬性:private final修飾 private final String seasonName; private final String seasonDesc; //2.私有化類的構造器,並給物件屬性賦值 private Season(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //3.提供當前列舉類的多個物件:public static final的 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("冬天","冰天雪地"); //4.其他訴求1:獲取列舉類物件的屬性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } //其他訴求2:提供toString() @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }
方式二:jdk5.0,可以使用enum關鍵字定義列舉類(實現程式碼在最下方)
三、Enum類中的常用方法:
- values():返回列舉型別的物件陣列。該方法可以很方便地遍歷所有的列舉值。
- valueOf():可以把一個字串轉為
- toString():返回當前列舉類物件常量的名稱
public class SeasonTest1 { public static void main(String[] args) { Season1 summer = Season1.SUMMER; //toString(): System.out.println(summer.toString()); System.out.println("============================="); //values(): Season1[] values = Season1.values(); for (int i = 0; i < values.length; i++) { System.out.println(values[i]); values[i].show(); } //valueOf(String objName):返回列舉類中物件名是objName的物件。 Season1 winter = Season1.valueOf("WINTER"); //如果沒有objName的列舉類物件,則拋異常:IllegalArgumentException //Season1 winter = Season1.valueOf("WINTER1"); System.out.println(winter); winter.show(); } }
四、使用enum關鍵字定義的列舉類實現介面的情況
情況一:實現介面,在enum類中實現抽象方法
情況二:讓列舉類的物件分別實現介面中的抽象方法
interface Info{ void show(); } //使用enum關鍵字定義列舉類 enum Season1 implements Info { //1.提供當前列舉類的物件,多個物件之間用逗號隔開,末尾物件用分號結束。 SPRING("春天","春暖花開"){ @Override public void show() { System.out.println("春天在哪裡?"); } }, SUMMER("夏天","夏日炎炎"){ @Override public void show() { System.out.println("夏天的風"); } }, AUTUMN("秋天","秋高氣爽"){ @Override public void show() { System.out.println("秋天不回來"); } }, WINTER("冬天","冰天雪地"){ @Override public void show() { System.out.println("大約在冬季"); } }; //2.宣告Season物件的屬性:private final修飾 private final String seasonName; private final String seasonDesc; //2.私有化類的構造器,並給物件屬性賦值 private Season1(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //4.其他訴求1:獲取列舉類物件的屬性 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }