enum java是什么,讓我們來(lái)了解一下?
enum是java的一個(gè)語(yǔ)法糖,實(shí)際編譯后的文件仍然是一個(gè)java類(lèi),enum編譯后就是繼承了Enum抽象類(lèi)的java類(lèi),枚舉常量值就是定義的public static final的類(lèi)對(duì)象變量。
那么我們今天就撥開(kāi)語(yǔ)法糖的外衣,看一看原始的java類(lèi)應(yīng)該是什么樣的。
首先寫(xiě)一個(gè)enum類(lèi):
enum?Color?{ RED,YELLOW,BLUE }
這樣簡(jiǎn)單的枚舉類(lèi)它的基本用法就是:打印,判斷相等,和switch:
package?aaa; ? public?class?User2?{ ? public?static?void?main(String[]?args)?{ System.out.println(Color.RED); Color?red?=?Color.RED; System.out.println(red==Color.RED); System.out.println(red.equals(Color.RED)); switch(red)?{ case?RED: System.out.println("red"); break; case?YELLOW: System.out.println("yellow"); break; case?BLUE: System.out.println("blue"); break; default: break; } } }
輸出結(jié)果如下:
RED true true red
這就是enum的基本行為。
到此介紹了enum的用法,但對(duì)于沒(méi)有使用習(xí)慣的小伙伴來(lái)講,還是覺(jué)得enum很陌生,enum與普通的java類(lèi)是什么關(guān)系呢?
其實(shí)enum編譯后就是繼承了Enum抽象類(lèi)的java類(lèi),枚舉常量值就是定義的public static final的類(lèi)對(duì)象變量。由于Enum類(lèi)在編寫(xiě)時(shí)是無(wú)法繼承的,我們就來(lái)模仿寫(xiě)一個(gè)enum的語(yǔ)法糖類(lèi)。
final?class?Color{ public?static?final?Color?RED?=?new?Color("RED"); public?static?final?Color?YELLOW?=?new?Color("YELLOW"); public?static?final?Color?BLUE?=?new?Color("BLUE"); private?String?name; public?Color(String?name)?{ super(); this.name?=?name; } ? public?String?getName()?{ return?name; } ? public?void?setName(String?name)?{ this.name?=?name; } @Override public?String?toString()?{ return?name; } }
這也僅僅是采用了字符串的方式進(jìn)行模仿,稍作修改main方法即可實(shí)現(xiàn)enum的功能。
以上就是小編今天的分享了,希望可以幫助到大家。