中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

java枚舉有什么用

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

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

一、基本概念

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

二、枚舉的優缺點

1、優點

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

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

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

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

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

2、缺點

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

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

三、解決ifelse

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

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

關于枚舉與switch是個比較簡單的話題,使用switch進行條件判斷時,條件參數一般只能是整型,字符型。而枚舉型確實也被switch所支持,在java 1.7后switch也對字符串進行了支持。這里我們簡單看一下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枚舉有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华宁县| 福泉市| 云霄县| 莱州市| 仁布县| 涪陵区| 台东县| 姜堰市| 卢龙县| 加查县| 葫芦岛市| 平原县| 尤溪县| 纳雍县| 临高县| 界首市| 林甸县| 萨迦县| 甘孜| 新晃| 徐汇区| 襄汾县| 舞阳县| 兴仁县| 青海省| 肥东县| 台北市| 威信县| 湄潭县| 丹江口市| 西峡县| 万安县| 黄冈市| 利津县| 敖汉旗| 临猗县| 白水县| 湘潭县| 西乌珠穆沁旗| 石景山区| 德令哈市|