而想弄明白枚舉類型是什么,就要把他和類進(jìn)行對(duì)比了。用ecplise創(chuàng)建一個(gè)類,你要使用這個(gè)類就得new一個(gè)對(duì)象出來(lái)對(duì)吧(當(dāng)然了,別較真,說(shuō)我用他的靜態(tài)屬性和方法);而當(dāng)你用ecplise創(chuàng)建一個(gè)枚舉類型時(shí),在使用時(shí)是不需要再new的,它本身就創(chuàng)建好了幾個(gè)對(duì)象在其內(nèi)部,這也就是枚舉和類的最大區(qū)別。
首先,先創(chuàng)建一個(gè)枚舉,看一下它到底是什么東西。
我們給這個(gè)枚舉對(duì)象加入兩個(gè)對(duì)象(red和green),一個(gè)屬性,一個(gè)構(gòu)造方法,還有setget方法,這樣一個(gè)簡(jiǎn)單的枚舉類型就創(chuàng)建好了。
說(shuō)說(shuō)枚舉的用處:一般用于配置信息,比如顏色 赤=1、橙=2、黃=3、綠=4、青=5、藍(lán)=6、紫=7,這就可以創(chuàng)建一個(gè)枚舉類型,你可以把數(shù)字存儲(chǔ)到數(shù)據(jù)庫(kù),在代碼里面顯示漢字,這樣使得代碼易懂。(當(dāng)然了,你非得在數(shù)據(jù)庫(kù)中存儲(chǔ)漢字也行)。再比如,用于錯(cuò)誤信息返回:成功=1、失敗=-1、部分成功=0,這樣你在代碼里面寫的時(shí)候,別人一看就一目了然,你寫0、1、-1誰(shuí)知道什么意思。當(dāng)然了最終的值還是數(shù)字,可是再別人讀你程序的時(shí)候,看到的是有具體意思的單詞。說(shuō)了這么多,可能還是有點(diǎn)迷惑,下面就是項(xiàng)目中的栗子。
說(shuō)說(shuō)我的理解:java中一切皆對(duì)象,不例外,枚舉(聲明好的枚舉類(暫且叫他枚舉類))也是一個(gè)對(duì)象。枚舉在創(chuàng)建完成之后就是一個(gè)對(duì)象(相對(duì)于類來(lái)說(shuō),對(duì)于類的對(duì)象需要new出來(lái),才是一個(gè)對(duì)象,而對(duì)于枚舉來(lái)說(shuō),不需要new,本身就是一個(gè)對(duì)象,仿佛枚舉類的所有成員和方法都是靜態(tài)的意思),枚舉的結(jié)構(gòu)一般包括【對(duì)象,屬性,構(gòu)造方法,setget方法】;對(duì)于一個(gè)創(chuàng)建好的枚舉對(duì)象,可以通過(guò)枚舉名稱+對(duì)象名稱+setget進(jìn)行操作。
關(guān)鍵點(diǎn):一個(gè)創(chuàng)建好的枚舉類型本身就聲明好了自己的對(duì)象。
占內(nèi)存:enums often require more than twice as much memory as static constants. you should strictly avoid using enums on android.意思就是相對(duì)于類的靜態(tài)屬性來(lái)說(shuō),枚舉要多占一些內(nèi)存空間。占內(nèi)存:enums often require more than twice as much memory as static constants. you should strictly avoid using enums on android.意思就是相對(duì)于類的靜態(tài)屬性來(lái)說(shuō),枚舉要多占一些內(nèi)存空間。