7 回答

TA貢獻1880條經(jīng)驗 獲得超4個贊
可以用來代替定義類型常量 ,比如 訂單狀態(tài),證件類型等,保證類型安全
比如用普通的String類表示訂單狀態(tài),調(diào)用方可以傳一個不在訂單狀態(tài)范圍內(nèi)的String給被調(diào)用方,這種錯誤在編譯階段不能發(fā)現(xiàn)java枚舉類本質(zhì)是一個多例模式實現(xiàn),單例模式是多例模式的一個特例
枚舉類不能繼承,比如enumA extends enumB不行
一個枚舉類 內(nèi)部類型有順序(order) 實現(xiàn)了 Comparable接口

TA貢獻1898條經(jīng)驗 獲得超8個贊
被你的條件嚇到了,我就說一點我個人的想法
enum可以看做一種特殊的class,包含一些訪問性公開的常量,其實作為訪問性公開的常量來說,在類加載過程中已經(jīng)被解析到常量池,enum只是從語義的角度使用戶可以更方便地在使用常量時展示常量的含義。同時也方便了常量的構(gòu)造,循環(huán)遍歷某一類型的所有常量,在switch語句中使用等等。

TA貢獻1862條經(jīng)驗 獲得超7個贊
先說說自己個人的膚淺的主觀的理解, 拋磚引玉.
我覺得 enum 出現(xiàn)的目的是:
提供一種管理常量的手段,
一種命名空間.

TA貢獻1828條經(jīng)驗 獲得超4個贊
enum的存在本身就是為了解決常量的可讀性的問題,在沒有enum之前,標記一種狀態(tài),常使用int類型,其1,2之類的可讀性不是很好,而且新增一個常量要寫一個長長語句,為了解決這一系列問題在jdk5就加上了這個功能。其本質(zhì)就是一個類,只不過在創(chuàng)建enum的時候,會自動生成values()、ordinal()等方法,并且支持了switch語句,覆蓋了常量會出現(xiàn)的場景,比直接定義常量要方便使用。
添加回答
舉報