一、列舉類的使用
- 列舉類的理解:類的物件只有有限個,確定的,我們稱此類為列舉類,
- 當需要定義一組常量時,強烈建議使用列舉類,
- 如果列舉類中只有一個物件,則可以作為單例模式的實作方式,
二、如何定義列舉類
方式一: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;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/287527.html
標籤:Java
下一篇:Java注解的使用
