Java基礎(chǔ)入門(mén)之switch怎么使用枚舉
在Java開(kāi)發(fā)中,switch語(yǔ)句是一種常用的流控制語(yǔ)句,用于根據(jù)不同的條件執(zhí)行不同的代碼塊。而當(dāng)使用枚舉類(lèi)型作為條件時(shí),我們常常會(huì)遇到“Constant expression required”的報(bào)錯(cuò)問(wèn)題,這給程序開(kāi)發(fā)造成了不小的困擾。
switch 語(yǔ)句中的變量類(lèi)型可以是: byte、short、int 或者 char。從 Java SE 7 開(kāi)始,switch 支持字符串 String 類(lèi)型了,同時(shí) case 標(biāo)簽必須為字符串常量或字面量。 我們創(chuàng)建一個(gè)枚舉:
@Getter @AllArgsConstructor public enum ProductEnum { TYPE_1(1,"精品推薦"), TYPE_2(2,"熱門(mén)榜單"), TYPE_3(3,"首發(fā)新品"), TYPE_4(4,"猜你喜歡"); private Integer value; private String desc; }
用switch語(yǔ)句:
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; // 熱門(mén)榜單 case ProductEnum.TYPE_4.getValue(): System.out.println("1"); break; }
看上去沒(méi)有問(wèn)題,但是因?yàn)閟witch中需要的是一個(gè)常量,但是枚舉中又是不可以加final關(guān)鍵字,所以會(huì)出現(xiàn)這種情況:(Constant expression required:需要常量表達(dá)式
)
我們想要使用就需要封裝一個(gè)方法在枚舉類(lèi)里面:
public static ProductEnum toType(int value) { return Stream.of(ProductEnum.values()) .filter(p -> p.value == value) .findAny() .orElse(null); }
封裝后的枚舉類(lèi):
@Getter @AllArgsConstructor public enum ProductEnum { TYPE_1(1,"精品推薦"), TYPE_2(2,"熱門(mén)榜單"), 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); } }
這個(gè)時(shí)候我們這么用:
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; // 熱門(mén)榜單 case TYPE_2: System.out.println("4"); break; }
這樣就沒(méi)問(wèn)題啦:
當(dāng)我們?cè)谔幚砻杜e類(lèi)型時(shí),遇到了“需要常量表達(dá)式”的問(wèn)題。針對(duì)這個(gè)問(wèn)題,我們可以按照上述方法進(jìn)行處理,將枚舉的值轉(zhuǎn)化成枚舉類(lèi)型,來(lái)避免編譯錯(cuò)誤。
除此之外,值得一提的是,在實(shí)際應(yīng)用中,枚舉也是一種非常重要的數(shù)據(jù)類(lèi)型。它可以用于表示各種狀態(tài)、選項(xiàng)以及配置項(xiàng),還可以為程序中的常量命名,以減少硬編碼。因此,熟練掌握枚舉類(lèi)型的相關(guān)操作,是我們開(kāi)發(fā)高效、優(yōu)質(zhì)代碼所必不可少的基本技能。
總之,本文向大家介紹了如何在Java開(kāi)發(fā)中處理枚舉類(lèi)型,讓大家更好地理解和掌握switch語(yǔ)句的使用方法。希望大家能夠通過(guò)學(xué)習(xí)和實(shí)踐,鞏固這些基礎(chǔ)知識(shí),并在日常工作中充分發(fā)揮它們的應(yīng)用價(jià)值,為自己的開(kāi)發(fā)工作提升整體效率與質(zhì)量。
到此這篇關(guān)于Java基礎(chǔ)入門(mén)之switch怎么使用枚舉的文章就介紹到這了,更多相關(guān)Java switch枚舉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java如何拷貝復(fù)制對(duì)象和集合問(wèn)題
這篇文章主要介紹了java如何拷貝復(fù)制對(duì)象和集合問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Java中Elasticsearch 實(shí)現(xiàn)分頁(yè)方式(三種方式)
Elasticsearch是用Java語(yǔ)言開(kāi)發(fā)的,并作為Apache許可條款下的開(kāi)放源碼發(fā)布,是一種流行的企業(yè)級(jí)搜索引擎,這篇文章主要介紹了Elasticsearch實(shí)現(xiàn)分頁(yè)的3種方式,需要的朋友可以參考下2022-07-07java中Date和Timestamp類(lèi)型的相互轉(zhuǎn)換方式
這篇文章主要介紹了java中Date和Timestamp類(lèi)型的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java實(shí)現(xiàn)的3des加密解密工具類(lèi)示例
這篇文章主要介紹了Java實(shí)現(xiàn)的3des加密解密工具類(lèi),結(jié)合完整實(shí)例形式分析了3des加密解密的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10java的內(nèi)部類(lèi)和外部類(lèi)用法講解
本文詳細(xì)講解了java的內(nèi)部類(lèi)和外部類(lèi)用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12Java知識(shí)點(diǎn)歸納 —給Java新手的一些建議(新手必看)
以下簡(jiǎn)單介紹了下我對(duì)于這些java基本知識(shí)點(diǎn)和技術(shù)點(diǎn)的一些看法和心得,這些內(nèi)容都源自于我這些年來(lái)使用java的一些總結(jié)2016-05-05