資源描述:
《全面掌握java枚舉類型》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、枚舉類型是JDK5.0的新特征。Sun引進了一個全新的關鍵字enum來定義一個枚舉類。下面就是一個典型枚舉類型的定義:Java代碼1.public?enum?Color{??2.????RED,BLUE,BLACK,YELLOW,GREEN??3.}??publicenumColor{RED,BLUE,BLACK,YELLOW,GREEN}顯然,enum很像特殊的class,實際上enum聲明定義的類型就是一個類。而這些類都是類庫中Enum類的子類(java.lang.Enum)。它們繼承了這個Enum中的許多有用的方法。下面我們就詳細介紹enum定義的枚舉類
2、的特征及其用法。(后面均用Color舉例)1、Color枚舉類是特殊的class,其枚舉值(RED,BLUE...)是Color的類對象(類實例):??????????????????Colorc=Color.RED;???而且這些枚舉值都是publicstaticfinal的,也就是我們經常所定義的常量方式,因此枚舉類中的枚舉值最好全部大寫。2、即然枚舉類是class,當然在枚舉類型中有構造器,方法和數據域。但是,枚舉類的構造器有很大的不同:?????(1)構造器只是在構造枚舉值的時候被調用。Java代碼1.enum?Color{??2.?????????????
3、???RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);??3.????????????????//構造枚舉值,比如RED(255,0,0)??4.????????????????private?Color(int?rv,int?gv,int?bv){??5.?????????????????this.redValue=rv;??6.?????????????????this.greenValue=gv;??7.?????????????????this.blueValu
4、e=bv;??8.????????????????}??9.??10.????????????????public?String?toString(){??//自定義的public方法??11.????????????????return?super.toString()+"("+redValue+","+greenValue+","+blueValue+")";??12.????????????????}??13.?????1.????????????????private?int?redValue;??//自定義數據域,private為了封裝。??2.?????
5、???????????private?int?greenValue;??3.????????????????private?int?blueValue;??4.?}??enumColor{RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);//構造枚舉值,比如RED(255,0,0)privateColor(intrv,intgv,intbv){this.redValue=rv;this.greenValue=gv;this.blueValue=bv;}publicStri
6、ngtoString(){//自定義的public方法returnsuper.toString()+"("+redValue+","+greenValue+","+blueValue+")";}privateintredValue;//自定義數據域,private為了封裝。privateintgreenValue;privateintblueValue;}?????(2)構造器只能私有private,絕對不允許有public構造器。這樣可以保證外部代碼無法新構造枚舉類的實例。這也是完全符合情理的,因為我們知道枚舉值是publicstaticfinal的常量而已。但枚
7、舉類的方法和數據域可以允許外部訪問。Java代碼1.public?static?void?main(String?args[])??2.{??3.????????//?Color?colors=new?Color(100,200,300);??//wrong??4.???????????Color?color=Color.RED;??5.???????????System.out.println(color);??//?調用了toString()方法??6.}?????publicstaticvoidmain(Stringargs[]){//Colorcolor