1. 程式人生 > 其它 >匯出Excel(ResponseEntity<byte[]>方式)

匯出Excel(ResponseEntity<byte[]>方式)

列舉型別

列舉型別可以取代以往常量的定義,即將常量封裝在類或介面中

定義

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());
        }
    }
}

使用列舉型別的優勢

  1. 型別安全
  2. 使資料定義緊湊有效
  3. 可以和程式其他部分完美互動
  4. 執行效率高