匯出Excel(ResponseEntity<byte[]>方式)
阿新 • • 發佈:2021-12-08
列舉型別
列舉型別可以取代以往常量的定義,即將常量封裝在類或介面中
定義
public enum Constants{
Constants_A,
Constants_B,
}
enum是列舉型別的關鍵字
可以將列舉型別看成是一個類,繼承於java.lang.Enum類
列舉型別常用方法
方法 | 具體含義 | 使用方法 | 舉例 |
---|---|---|---|
values() | 可以將列舉型別成員以陣列的形式返回 | 列舉型別名稱.values() | Constants.values() |
valueOf() | 可以實現將普通字串轉換成列舉例項 | 列舉型別名稱.valueOf() | Constants.valueOf("abc") |
compareTo() | 用於比較兩個列舉物件在定義時的順序 | 列舉物件.compareTo() | Constants_A.compareTo()(Constants_B) |
ordinal() | 用於得到列舉成員的位置索引 | 列舉物件.ordinal() | Constants_A.ordinal() |
values()
將列舉中的所有列舉值以陣列形式返回
enum SeasonEnum{ //四級列舉 SPRING,SUMMER,AUTUMN,WINTER } public class Demo01 { public static void main(String[] args) { SeasonEnum es[]=SeasonEnum.values(); for (int i = 0; i < es.length; i++) { System.out.println("列舉常量:"+es[i]); } } }
valueOf()與compareTo()
用字串建立一個季節的列舉值,並判斷季節的位置
enum SeasonEnum{ //四級列舉 SPRING,SUMMER,AUTUMN,WINTER } public class Demo02 { public static void main(String[] args) { SeasonEnum tmp=SeasonEnum.valueOf("SUMMER"); //根據字串建立一個列舉值 SeasonEnum es[]=SeasonEnum.values(); //獲取所有列舉值 for (int i = 0; i < es.length; i++) { String message=""; //待輸出的訊息 int result=tmp.compareTo(es[i]); //記錄兩個列舉的比較結果 if(result<0){ message=tmp+"在"+es[i]+"的前"+(-result)+"個位置"; }else if(result>0){ message=tmp+"在"+es[i]+"的後"+result+"個位置"; }else if(result==0){ message=tmp+"與"+es[i]+"是同一個值"; } System.out.println(message); } } } /* SUMMER在SPRING的後1個位置 SUMMER與SUMMER是同一個值 SUMMER在AUTUMN的前1個位置 SUMMER在WINTER的前2個位置 */
ordinal()
enum SeasonEnum{ //四級列舉
SPRING,SUMMER,AUTUMN,WINTER
}
public class Demo03 {
public static void main(String[] args) {
SeasonEnum es[]=SeasonEnum.values();
for (int i = 0; i < es.length; i++) {
System.out.println(es[i]+"在列舉型別中位置索引值"+es[i].ordinal());
}
}
}
/*
SPRING在列舉型別中位置索引值0
SUMMER在列舉型別中位置索引值1
AUTUMN在列舉型別中位置索引值2
WINTER在列舉型別中位置索引值3
*/
列舉型別中的構造方法
規定構造方法必須被private修飾符所修飾
舉例:
enum SeasonEnum{
SPRING("萬物復甦"),
SUMMER("烈日炎炎"),
AUTUMN("秋草枯黃"),
WINTER("白雪皚皚");
private String remarks; //列舉的備註
SeasonEnum(String remarks){ //構造方法
this.remarks="我是"+ this +",我來之後"+remarks+"。";
}
public String getRemarks(){ //獲取備註值
return remarks;
}
}
public class Demo04 {
public static void main(String[] args) {
SeasonEnum es[]=SeasonEnum.values();
for (int i = 0; i < es.length; i++) {
System.out.println(es[i].getRemarks());
}
}
}
使用列舉型別的優勢
- 型別安全
- 使資料定義緊湊有效
- 可以和程式其他部分完美互動
- 執行效率高