溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java枚舉有什么用

發(fā)布時間:2022-03-31 09:35:42 來源:億速云 閱讀:339 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“java枚舉有什么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java枚舉有什么用”這篇文章吧。

一、基本概念

枚舉是Java1.5引入的新特性,通過關(guān)鍵字enum來定義枚舉類。枚舉類是一種特殊類,它和普通類一樣可以使用構(gòu)造器、定義成員變量和方法,也能實現(xiàn)一個或多個接口,但枚舉類不能繼承其他類。

二、枚舉的優(yōu)缺點

1、優(yōu)點

Effctive Java中之所以推薦用枚舉代替所有常量Code,原因如下:

(1)類型檢查,有效性檢查

(2)枚舉作為一個類,可以有自己的屬性(通常應(yīng)該是常量,我沒遇到過不是的情況)以及自己的方法(否則只能用switch來寫,實際違反原則)

(3)和常量相比,無需查看文檔和源碼就能直接知道所有可能返回值,方便編碼。

然而這里的問題就出在第一點上,實際上分布式環(huán)境下(1)并不是必然的。如果業(yè)務(wù)處理中允許某個接口返回值有未定義內(nèi)容,那么在反序列化中就不該對此拋出異常,不必死守(1)。同時,從第(2)點和第(3)點來看,這樣限制枚舉的使用范圍造成的影響是極大的。將有自己屬性,自己方法實現(xiàn)的枚舉改寫為code和其他方法的配合,需要的代碼量上升不少,而且代碼腐爛度極大增加。

2、缺點

(1)由于Java中支持單繼承,因此枚舉類型不能再繼承其他類;

(2)使用枚舉作為返回值可能造成的問題其實大家都知道就是客戶端和服務(wù)端版本不一致的話,會造成反序列化異常,于是《阿里巴巴JAVA開發(fā)手冊》對于這個問題的處理辦法就采取了盡量避免異常出現(xiàn),所以禁止定義枚舉為返回值。

三、解決ifelse

對于業(yè)務(wù)開發(fā)來說,業(yè)務(wù)邏輯的復(fù)雜是必然的,隨著業(yè)務(wù)發(fā)展,需求只會越來越復(fù)雜,為了考慮到各種各樣的情況,代碼中不可避免的會出現(xiàn)很多if-else。

一旦代碼中if-else過多,就會大大的影響其可讀性和可維護(hù)性,而且代碼顯得很low。
java枚舉有什么用
枚舉可以解決這個問題;

關(guān)于枚舉與switch是個比較簡單的話題,使用switch進(jìn)行條件判斷時,條件參數(shù)一般只能是整型,字符型。而枚舉型確實也被switch所支持,在java 1.7后switch也對字符串進(jìn)行了支持。這里我們簡單看一下switch與枚舉類型的使用

static void testSwitch(Week week){
    switch (week){
        case MONDAY:
            System.out.println(week.getMeaning());
            break;
        case TUESDAY:
            System.out.println(week.getMeaning());
            break;
        case WEDNESDAY:
            System.out.println(week.getMeaning());
            break;
        case THURSDAY:
            System.out.println(week.getMeaning());
            break;
        case FRIDAY:
            System.out.println(week.getMeaning());
            break;
        case SATURDAY:
            System.out.println(week.getMeaning());
            break;
        case SUNDAY:
            System.out.println(week.getMeaning());
            break;
        default:
            System.out.println("您輸入有誤");
            break;
    }}

四、枚舉的常用方法

java枚舉有什么用


以上是“java枚舉有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI