欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基礎(chǔ)入門之switch怎么使用枚舉

 更新時間:2023年06月06日 11:42:38   作者:掉頭發(fā)的王富貴  
在Java開發(fā)中,switch語句是一種常用的流控制語句,而當(dāng)使用枚舉類型作為條件時,我們常常會遇到報錯問題,那么該如何解決呢,下面就來詳細(xì)講講

在Java開發(fā)中,switch語句是一種常用的流控制語句,用于根據(jù)不同的條件執(zhí)行不同的代碼塊。而當(dāng)使用枚舉類型作為條件時,我們常常會遇到“Constant expression required”的報錯問題,這給程序開發(fā)造成了不小的困擾。

switch 語句中的變量類型可以是: byte、short、int 或者 char。從 Java SE 7 開始,switch 支持字符串 String 類型了,同時 case 標(biāo)簽必須為字符串常量或字面量。 我們創(chuàng)建一個枚舉:

@Getter
@AllArgsConstructor
public enum ProductEnum {
	TYPE_1(1,"精品推薦"),
	TYPE_2(2,"熱門榜單"),
	TYPE_3(3,"首發(fā)新品"),
	TYPE_4(4,"猜你喜歡");
	private Integer value;
	private String desc;
}

用switch語句:

 int a = 0;
        // order
        switch (a) {
            //精品推薦
            case ProductEnum.TYPE_1.getValue():
                System.out.println("1");
                break;
            //首發(fā)新品
            case ProductEnum.TYPE_2.getValue():
                System.out.println("1");
                break;
            // 猜你喜歡
            case ProductEnum.TYPE_3.getValue():
                System.out.println("1");
                break;
            // 熱門榜單
            case ProductEnum.TYPE_4.getValue():
                System.out.println("1");
                break;
        }

看上去沒有問題,但是因?yàn)閟witch中需要的是一個常量,但是枚舉中又是不可以加final關(guān)鍵字,所以會出現(xiàn)這種情況:(Constant expression required:需要常量表達(dá)式

我們想要使用就需要封裝一個方法在枚舉類里面:

public static ProductEnum toType(int value) {
		return Stream.of(ProductEnum.values())
				.filter(p -> p.value == value)
				.findAny()
				.orElse(null);
	}

封裝后的枚舉類:

@Getter
@AllArgsConstructor
public enum ProductEnum {
	TYPE_1(1,"精品推薦"),
	TYPE_2(2,"熱門榜單"),
	TYPE_3(3,"首發(fā)新品"),
	TYPE_4(4,"猜你喜歡");
	private Integer value;
	private String desc;
	public static ProductEnum toType(int value) {
		return Stream.of(ProductEnum.values())
				.filter(p -> p.value == value)
				.findAny()
				.orElse(null);
	}
}

這個時候我們這么用:

   int a = 0;
        switch (ProductEnum.toType(a)) {
            //精品推薦
            case TYPE_1:
                System.out.println("1");
                break;
            //首發(fā)新品
            case TYPE_3:
                System.out.println("2");;
                break;
            // 猜你喜歡
            case TYPE_4:
                System.out.println("3");
                break;
            // 熱門榜單
            case TYPE_2:
                System.out.println("4");
                break;
        }

這樣就沒問題啦:

當(dāng)我們在處理枚舉類型時,遇到了“需要常量表達(dá)式”的問題。針對這個問題,我們可以按照上述方法進(jìn)行處理,將枚舉的值轉(zhuǎn)化成枚舉類型,來避免編譯錯誤。

除此之外,值得一提的是,在實(shí)際應(yīng)用中,枚舉也是一種非常重要的數(shù)據(jù)類型。它可以用于表示各種狀態(tài)、選項以及配置項,還可以為程序中的常量命名,以減少硬編碼。因此,熟練掌握枚舉類型的相關(guān)操作,是我們開發(fā)高效、優(yōu)質(zhì)代碼所必不可少的基本技能。

總之,本文向大家介紹了如何在Java開發(fā)中處理枚舉類型,讓大家更好地理解和掌握switch語句的使用方法。希望大家能夠通過學(xué)習(xí)和實(shí)踐,鞏固這些基礎(chǔ)知識,并在日常工作中充分發(fā)揮它們的應(yīng)用價值,為自己的開發(fā)工作提升整體效率與質(zhì)量。

到此這篇關(guān)于Java基礎(chǔ)入門之switch怎么使用枚舉的文章就介紹到這了,更多相關(guān)Java switch枚舉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring異常捕獲且回滾事務(wù)解決方案

    Spring異常捕獲且回滾事務(wù)解決方案

    這篇文章主要介紹了Spring異常捕獲且回滾事務(wù)解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • java如何拷貝復(fù)制對象和集合問題

    java如何拷貝復(fù)制對象和集合問題

    這篇文章主要介紹了java如何拷貝復(fù)制對象和集合問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java中Elasticsearch 實(shí)現(xiàn)分頁方式(三種方式)

    Java中Elasticsearch 實(shí)現(xiàn)分頁方式(三種方式)

    Elasticsearch是用Java語言開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是一種流行的企業(yè)級搜索引擎,這篇文章主要介紹了Elasticsearch實(shí)現(xiàn)分頁的3種方式,需要的朋友可以參考下
    2022-07-07
  • java中Date和Timestamp類型的相互轉(zhuǎn)換方式

    java中Date和Timestamp類型的相互轉(zhuǎn)換方式

    這篇文章主要介紹了java中Date和Timestamp類型的相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringBoot?內(nèi)置工具類的使用

    SpringBoot?內(nèi)置工具類的使用

    本文主要介紹了SpringBoot?內(nèi)置工具類的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java實(shí)現(xiàn)的3des加密解密工具類示例

    Java實(shí)現(xiàn)的3des加密解密工具類示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的3des加密解密工具類,結(jié)合完整實(shí)例形式分析了3des加密解密的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • java的內(nèi)部類和外部類用法講解

    java的內(nèi)部類和外部類用法講解

    本文詳細(xì)講解了java的內(nèi)部類和外部類用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • SparkSQL使用快速入門

    SparkSQL使用快速入門

    spark SQL是spark的一個模塊,主要用于進(jìn)行結(jié)構(gòu)化數(shù)據(jù)的處理。它提供的最核心的編程抽象就是DataFrame。這篇文章主要介紹了SparkSQL使用快速入門,需要的朋友可以參考下
    2021-08-08
  • Java知識點(diǎn)歸納 —給Java新手的一些建議(新手必看)

    Java知識點(diǎn)歸納 —給Java新手的一些建議(新手必看)

    以下簡單介紹了下我對于這些java基本知識點(diǎn)和技術(shù)點(diǎn)的一些看法和心得,這些內(nèi)容都源自于我這些年來使用java的一些總結(jié)
    2016-05-05
  • SpringCloud的全鏈路灰度發(fā)布方案詳解

    SpringCloud的全鏈路灰度發(fā)布方案詳解

    這篇文章主要介紹了SpringCloud的全鏈路灰度發(fā)布方案詳解,灰度發(fā)布(又名金絲雀發(fā)布)是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式,灰度發(fā)布可以保證系統(tǒng)的穩(wěn)定性,?在初始灰度的時候可以發(fā)現(xiàn),?調(diào)整問題,?保證其影響度,需要的朋友可以參考下
    2023-09-09

最新評論