作為枚舉中的一個(gè)基礎(chǔ)類,是使用的方法中也有很多種,比如它能對(duì)枚舉進(jìn)行說(shuō)明,在知識(shí)點(diǎn)上和之前所學(xué)的接口、靜態(tài)方法等都能有所聯(lián)系。接下來(lái)我們對(duì)Enum類使用的一些范圍進(jìn)行說(shuō)明,然后帶來(lái)幾種Enum類常見(jiàn)使用方法的介紹,最后就其中的compareTo()方法帶來(lái)實(shí)例講解。
1.Enum類的說(shuō)明
Enum類有兩個(gè)成員變量:name和ordinal。其中,name用于記錄枚舉常量的名字。比如APPLE、ORANGE和BANANA。ordinal用于記錄枚舉常量在聲明時(shí)的順序(從0開(kāi)始)。比如APPLE是0、ORANGE是1、BANANA是2。
Enum類有一個(gè)構(gòu)造函數(shù),它有兩個(gè)入?yún)ⅲ謩e為name和ordianl賦值。
Enum類重寫(xiě)了toString()方法,返回枚舉常量的name值。
Enum類重寫(xiě)了equals()方法,直接用等號(hào)比較。
Enum類不允許克隆,clone()方法直接拋出異常。(保證枚舉永遠(yuǎn)是單例的)
Enum類實(shí)現(xiàn)了Comparable接口,直接比較枚舉常量的ordinal的值。
Enum類有一個(gè)靜態(tài)的valueOf()方法,可以根據(jù)枚舉類型以及name返回對(duì)應(yīng)的枚舉常量。
Enum類不允許反序列化,為了保證枚舉永遠(yuǎn)是單例的。
2.Enum常見(jiàn)方法
(1)ordinal()方法:該方法獲取的是枚舉變量在枚舉類中聲明的順序,下標(biāo)從0開(kāi)始,如日期中的MONDAY在第一個(gè)位置,那么MONDAY的ordinal值就是0,如果MONDAY的聲明位置發(fā)生變化,那么ordinal方法獲取到的值也隨之變化,注意在大多數(shù)情況下我們都不應(yīng)該首先使用該方法,畢竟它總是變幻莫測(cè)的。
(2)compareTo(E o)方法:比較枚舉的大小,注意其內(nèi)部實(shí)現(xiàn)是根據(jù)每個(gè)枚舉的ordinal值大小進(jìn)行比較的。
(3)name()方法與toString():幾乎是等同的,都是輸出變量的字符串形式。
(4)getDeclaringClass(): 返回該枚舉變量所在的枚舉類。
3.實(shí)例
以上面的compareTo()為例
輸出:
以上就是java中關(guān)于enum使用方法的介紹,相信大家對(duì)ordinal()、compareTo(E o)等方法都有了初步的了解,更多enum方法的使用,也會(huì)在接下來(lái)的文章中展現(xiàn)給大家。更多關(guān)于“Java培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢(mèng)想。