Constant expression required問題解決

在上一篇文章中,我用自己寫的枚舉類來作Case判斷的時候發現了問題。系統一直提示Constant expression required,這是爲什麼呢?

原因是這樣的:switch…case語句的case後面的值必須爲常量,因爲switch在編譯的時候需要確保case裏面的值必須不能相同。直接寫getXXX這樣的方法是可能出現重複的,因爲你可以寫兩個相同的枚舉值,但是實際業務場景下,一般也不會有人這樣子做。即使如此,編譯器還是不認。那怎麼辦呢,我們加一個方法提前判斷就行了。

枚舉類

public enum NumberForCaseEnum {
    
    ONE(1),
    TWO(2),
    THREE(3),
    FOUR(4);
    private int index;

    private NumberForCaseEnum(int index){
        this.index=index;
    }
    public int getIndex(){
        return this.index;
    }

    /**
     * 提前判斷,用於解決
     * Case中出現的Constant expression required
     * @param value
     * @return
     */
    public static NumberForCaseEnum getByValue(int value){
        for(NumberForCaseEnum x:values()){
            if(x.getIndex()==value){
                return x;
            }
        }
        return null;
    }
}

測試代碼:

		//可以通過循環遍歷拿值
		for(NumberForCaseEnum x:NumberForCaseEnum.values()){
			System.out.println("枚舉值:"+x.getIndex());
		}
		//也可以單獨拿值
		System.out.println("調皮搗蛋的:"+ONE.getIndex());
		//
		switch(NumberForCaseEnum.getByValue(2)){
			case ONE:
				System.out.println("1111");
				break;
			case TWO:
				System.out.println("精明可愛的:2222");
				break;
			case THREE:
				System.out.println("3333");
				break;
			default:
		}

運行結果:
在這裏插入圖片描述
關注公衆號,獲取更多資源
在這裏插入圖片描述

每天進步一點點,開心也多一點點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章