netty系列之:我有一个可扩展的Enum你要不要看一下?
netty系列之:我有一個(gè)可擴(kuò)展的Enum你要不要看一下?
簡(jiǎn)介
很多人都用過(guò)java中的枚舉,枚舉是JAVA 1.5中引用的一個(gè)新的類(lèi)型,用來(lái)表示可以列舉的范圍,但是可能很少有人知道java中的enum到底是怎么工作的,enum和Enum有什么關(guān)系 ?Enum可不可以擴(kuò)展?
一起來(lái)看看吧 。
enum和Enum
JAVA1.5中引入了枚舉類(lèi) ,我們通常使用enum關(guān)鍵字來(lái)定義一個(gè)枚舉類(lèi):
public enum StatusEnum { START(1,"start"), INPROCESS(2,"inprocess"), END(3,"end"); private int code; private String desc; StatusEnum(int code, String desc){ this.code=code; this.desc=desc; }}上面的枚舉類(lèi)中 ,我們自定義了構(gòu)造函數(shù) ,并且定義了3個(gè)枚舉對(duì)象。
接下來(lái)看下怎么來(lái)使用這個(gè)枚舉類(lèi):
public static void main(String[] args) { StatusEnum start = START; System.out.println(start.name()); System.out.println(start.ordinal()); System.out.println(start.code); System.out.println(start.desc); }可以輸出code和desc很好理解,因?yàn)檫@是我們自定義的枚舉類(lèi)中的屬性,但是name和ordinal是什么呢 ?他們是哪里來(lái)的呢?
這里就要介紹java.lang.Enum類(lèi)了,它是JAVA中所有enum枚舉類(lèi)的父類(lèi),name()和ordinal()方法就是在這個(gè)類(lèi)中定義的 :
public final int ordinal() { return ordinal; }public final String name() { return name; }其中ordinal表示的是枚舉類(lèi)中枚舉的位置,那么就是枚舉類(lèi)中枚舉的名字 。在上面的例子中