枚舉

1.1 枚舉類

一些方法在運行時,它須要的數據不能是任意的,而必須是必定範圍內的值,此類問題在JDK5之前採用自定義帶有枚舉功能的類解決,Java5之後能夠直接使用枚舉予以解決。java

例如交通燈(紅、黃、綠)    性別(男、女)   星期(星期1、2、三…..)設計模式

     分數等級(ABCDE)ide

JDK 5新增的 enum 關鍵字用於定義一個枚舉類。函數

枚舉的實現this

使用enum定義枚舉類spa

在枚舉類中定義枚舉值(大寫)設計

enum Gender {對象

MALE, FEMALE;繼承

}接口

使用javap命令

 

 

發現其中每個枚舉值都是枚舉類的具體實例對象.只不過是靜態常量.

枚舉類具備以下特性:

枚舉類也是一種特殊形式的Java類。

枚舉類中聲明的每個枚舉值表明枚舉類的一個實例對象。

java中的普通類同樣,在聲明枚舉類時,也能夠聲明屬性、方法和構造函數.

public class Demo1 {

public static void main(String[] args) {

Gender male = Gender.MALE;

System.out.println(male.getInfo());

}

}

 

enum Gender {

MALE(""), FEMALE;

 

// 成員變量

private String info;

 

// 構造函數

private Gender() {

 

}

 

private Gender(String info) {

this.info = info;

}

 

// 成員方法

public String getInfo() {

return info;

}

 

}

枚舉類能夠聲明抽象方法,可是要有具體的枚舉值去實現.

public class Demo1 {

public static void main(String[] args) {

Gender male = Gender.MALE;

System.out.println(male.getInfo());

male.speak();

}

}

 

enum Gender {

MALE("") {

@Override

public void speak() {

System.out.println("是男人");

}

},

FEMALE {

@Override

public void speak() {

System.out.println("是女人");

}

};

 

// 成員變量

private String info;

 

// 構造函數

private Gender() {

 

}

 

private Gender(String info) {

this.info = info;

}

 

// 成員方法

public String getInfo() {

return info;

}

 

public abstract void speak();

 

}

 

枚舉類也能夠實現接口(序列化)、或繼承抽象類。

JDK5中擴展了swith語句,它除了能夠接收int, byte, char, short外,還能夠接收一個枚舉類型(enum)

public class Demo2 {

public static void main(String[] args) {

WeekDay mon = WeekDay.MON;

switch (mon) {

case MON:

System.out.println("星期一要上班...");

break;

case TUE:

System.out.println("星期二,繼續上班...");

break;

}

}

}

 

enum WeekDay {

MON, TUE, WED, THU, FRI, SAT, SUN;

}

 

 

若枚舉類只有一個枚舉值,則能夠看成單態設計模式使用。

練習:

請編寫一個關於星期幾的枚舉WeekDay,要求:枚舉值:Mon,Tue,Wed,Thu,Fri,Sat,Sun 該枚舉要有一個方法,調用該方法返回中文格式的星期。

enum WeekDay {

MON {

 

@Override

public String getInfo() {

 

return "星期一";

}

 

},

TUE {

@Override

public String getInfo() {

 

return "星期二";

}

},

WED {

@Override

public String getInfo() {

 

return "星期三";

}

},

THU {

@Override

public String getInfo() {

 

return "星期四";

}

},

FRI {

@Override

public String getInfo() {

 

return "星期五";

}

},

SAT {

@Override

public String getInfo() {

 

return "星期六";

}

},

SUN {

@Override

public String getInfo() {

 

return "星期天";

}

};

 

public abstract String getInfo();

}

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息