Enum§@¬°Sun¥þ·s¤Þ¶iªº¤@ÓÃöÁä¦r¡A¬Ý°_¨Ó«Ü¹³¬O¯S®íªºclass, ¥¦¤]¥i¥H¦³¦Û¤vªºÅܼơA¥i¥H©w¸q¦Û¤vªº¤èªk¡A¥i¥H¹ê²{¤@өΪ̦hÓ¤¶±¡C ·í§Ú̦bÁn©ú¤@ÓenumÃþ«¬®É¡A§ÚÌÀ³¸Óª`·N¨ìenumÃþ«¬¦³¦p¤Uªº¤@¨Ç¯S¼x¡C
¡@¡@1¡D¥¦¤£¯à¦³publicªººc³y¨ç¼Æ¡A³o¼Ë°µ¥i¥H«OÃҫȤá¥N½X¨S¦³¿ìªk·s«Ø¤@Óenumªº¹ê¨Ò¡C
¡@¡@2¡D©Ò¦³ªTÁ|ȳ£¬Opublic , static , finalªº¡Cª`·N³o¤@ÂI¥u¬O°w¹ï©óªTÁ|È¡A§ÚÌ¥i¥H©M¦b´¶³qÃþùر©w¸q ÅܼƤ@¼Ë©w¸q¨ä¥L¥ô¦óÃþ«¬ªº«DªTÁ|ÅܼơA³o¨ÇÅܼƥi¥H¥Î¥ô¦ó§A·Q¥Îªº×¹¢²Å¡C
¡@¡@3¡DEnumÀq»{¹ê²{¤Fjava.lang.Comparable¤¶±¡C
¡@¡@4¡DEnumÂиü¤F¤FtoString¤èªk¡A¦]¦¹§Ú̦pªG½Õ¥ÎColor.Blue.toString()Àq»{ªð¦^¦r²Å¦ê¡¨Blue¡¨.
¡@¡@5¡DEnum´£¨Ñ¤F¤@ÓvalueOf¤èªk¡A³oÓ¤èªk©MtoString¤èªk¬O¬Û¹ïÀ³ªº¡C½Õ¥ÎvalueOf(¡§Blue¡¨)±Nªð¦^Color.Blue.¦]¦¹§Ú̦b¦Û¤v«¼gtoString¤èªkªº®ÉÔ´Nnª`·N¨ì³o¤@ÂI¡A¤@§â¨Ó»¡À³¸Ó¬Û¹ïÀ³¦a«¼gvalueOf¤èªk¡C
¡@¡@6¡DEnumÁÙ´£¨Ñ¤Fvalues¤èªk¡A³oÓ¤èªk¨Ï§A¯à°÷¤è«Kªº¹M¾ú©Ò¦³ªºªTÁ|È¡C
¡@¡@7¡DEnumÁÙ¦³¤@Óoridinalªº¤èªk¡A³oÓ¤èªkªð¦^ªTÁ|ȦbªTÁ|ÃþºØªº¶¶§Ç¡A³oÓ¶¶§Ç®Ú¾ÚªTÁ|ÈÁn©úªº¶¶§Ç¦Ó©w¡A³o¸ÌColor.Red.ordinal()ªð¦^0¡C
¡@¡@¤F¸Ñ¤F³o¨Ç°ò¥»¯S©Ê¡A§Ų́Ӭݬݦp¦ó¨Ï¥Î¥¦Ì¡C
¡@¡@1¡D¹M¾ú©Ò¦³¦³ªTÁ|È. ª¾¹D¤F¦³values¤èªk¡A§ÚÌ¥i¥H»´¨®¼ô¸ô¦a¥ÎForEach°j°é¨Ó¹M¾ú¤FªTÁ|ȤF¡C
¡@¡@for (Color c: Color.values()) ¡@¡@System.out.println(¡§find value:¡¨ + c);
¡@¡@2¡D¦benum¤¤©w¸q¤èªk©MÅܼơA¤ñ¦p§ÚÌ¥i¥H¬°Color¼W¥[¤@Ó¤èªkÀH¾÷ªð¦^¤@ÓÃC¦â¡C
¡@¡@public enum Color { ¡@¡@Red, ¡@¡@Green, ¡@¡@Blue;
¡@¡@/* ¡@¡@*©w¸q¤@ÓÅܼƪí¥ÜªTÁ|Ȫº¼Æ¥Ø¡C ¡@¡@*(§Ú¦³ÂI©_©Ç¬°¤°»òsun¨S¦³µ¹enumª½±µ´£¨Ñ¤@Ósize¤èªk). ¡@¡@*/ ¡@¡@private static int number = Color.values().length ;
¡@¡@/** ¡@¡@* ÀH¾÷ªð¦^¤@ÓªTÁ|È ¡@¡@@return a random enum value. ¡@¡@*/ ¡@¡@public static Color getRandomColor(){ ¡@¡@long random = System.currentTimeMillis() % number; ¡@¡@switch ((int) random){ ¡@¡@¡@case 0: ¡@¡@¡@¡@return Color.Red; ¡@¡@¡@case 1: ¡@¡@¡@¡@return Color.Green; ¡@¡@¡@case 2: ¡@¡@¡@¡@return Color.Blue; ¡@¡@¡@default : return Color.Red; ¡@¡@} ¡@¡@} ¡@¡@}
¡@¡@¥i¥H¬Ý¥X³o¦bªTÁ|Ãþ«¬ùØ©w¸qÅܼƩM¤èªk©M¦b´¶³qÃþùر©w¸q¤èªk©MÅܼƨS¦³¤°»ò°Ï§O¡C°ß¤@nª`·Nªº¥u¬OÅܼƩM¤èªk©w¸q¥²¶·©ñ¦b©Ò¦³ªTÁ|È©w¸qªº«á±¡A§_«h½s;¹·|µ¹¥X¤@Ó¿ù»~¡C
¡@¡@3¡DÂиü(Override)toString, valueOf¤èªk
¡@¡@«e±§Ṳ́w¸gª¾¹Denum´£¨Ñ¤FtoString,valueOfµ¥¤èªk¡A«Ü¦h®ÉÔ§Ú̳£»ÝnÂиüÀq»{ªºtoString¤èªk¡A¨º»ò¹ï©óenum§ÚÌ«ç»ò°µ©O¡C¨ä¹ê³o©MÂиü¤@Ó´¶³qclassªºtoString¤èªk¨S¦³¤°»ò°Ï§O¡C
¡@¡@¡K. ¡@¡@public String toString(){ ¡@¡@switch (this){ ¡@¡@case Red: ¡@¡@¡@return "Color.Red"; ¡@¡@case Green: ¡@¡@¡@return "Color.Green"; ¡@¡@case Blue: ¡@¡@¡@return "Color.Blue"; ¡@¡@default: ¡@¡@¡@return "Unknow Color"; ¡@¡@} ¡@¡@} ¡@¡@¡K. ¡@¡@³o®É§ÚÌ¥i¥H¬Ý¨ì¡A¦¹®É¦A¥Î«e±ªº¹M¾ú¥N½X¦C¦L¥X¨Óªº¬O
¡@¡@Color.Red ¡@¡@Color.Green ¡@¡@Color.Blue
¡@¡@¦Ó¤£¬O
¡@¡@Red ¡@¡@Green ¡@¡@Blue.
¡@¡@¥i¥H¬Ý¨ìtoString½T¹ê¬O³QÂиü¤F¡C¤@¯ë¨Ó»¡¦bÂиütoStringªº®ÉÔ§Ú̦P®É¤]À³¸ÓÂиüvalueOf¤èªk¡A¥H«O«ù¥¦Ì¬Û¤¬ªº¤@P©Ê¡C
¡@¡@4¡D¨Ï¥Îºc³y¨ç¼Æ
¡@¡@ÁöµMenum¤£¥i¥H¦³publicªººc³y¨ç¼Æ¡A¦ý¬O§ÚÌÁÙ¬O¥i¥H©w¸qprivateªººc³y¨ç¼Æ¡A¦benum¤º³¡¨Ï¥Î¡CÁÙ¬O¥ÎColor³oÓ¨Ò¤l¡C
¡@¡@public enum Color { ¡@¡@Red("This is Red"), ¡@¡@Green("This is Green"), ¡@¡@Blue("This is Blue");
¡@¡@private String desc;
¡@¡@Color(String desc){ ¡@¡@this.desc = desc; ¡@¡@}
¡@¡@public String getDesc(){ ¡@¡@return this.desc; ¡@¡@}
¡@¡@}
¡@¡@³o¸Ì§Ú̬°¨C¤@ÓÃC¦â´£¨Ñ¤F¤@Ó»¡©ú¸ê°T, µM«á©w¸q¤F¤@Óºc³y¨ç¼Æ±µ¨ü³oÓ»¡©ú¸ê°T¡C
¡@¡@nª`·N³o¸Ìºc³y¨ç¼Æ¤£¯à¬°public©ÎªÌprotected, ±q¦Ó«OÃÒºc³y¨ç¼Æ¥u¯à¦b¤º³¡¨Ï¥Î¡A«È¤á¥N½X¤£¯ànew¤@ÓªTÁ|Ȫº¹ê¨Ò¥X¨Ó¡C³o¤]¬O§¹¥þ²Å¦X±¡²zªº¡A¦]¬°§Ú̪¾¹DªTÁ|ȬOpublic static finalªº±`¶q¦Ó¤w¡C
¡@¡@5¡D¹ê²{¯S©wªº¤¶±
¡@¡@§Ṳ́w¸gª¾¹Denum¥i¥H©w¸qÅܼƩM¤èªk¡A¥¦n¹ê²{¤@Ó¤¶±¤]©M´¶³qclass¹ê²{¤@Ó¤¶±¤@¼Ë¡A³o¸Ì´N¤£§@¥Ü¨Ò¤F¡C
¡@¡@6¡D©w¸qªTÁ|Ȧۤvªº¤èªk¡C
¡@¡@«e±§Ú̬ݨì¥i¥H¬°enum©w¸q¤@¨Ç¤èªk¡A¨ä¹ê§Ú̬Ʀܥi¥H¬°¨C¤@ÓªTÁ|È©w¸q¤èªk¡C³o¼Ë¡A§ÚÌ«e±Âиü toStringªº¨Ò¤l¥i¥H³Q§ï¼g¦¨³o¼Ë¡C
¡@¡@public enum Color { ¡@¡@Red { ¡@¡@public String toString(){ ¡@¡@¡@return "Color.Red"; ¡@¡@} ¡@¡@}, ¡@¡@Green { ¡@¡@public String toString(){ ¡@¡@¡@return "Color.Green"; ¡@¡@} ¡@¡@}, ¡@¡@Blue{ ¡@¡@public String toString(){ ¡@¡@¡@return "Color.Blue"; ¡@¡@} ¡@¡@}; ¡@¡@}
¡@¡@±qÅÞ¿è¤W¨Ó»¡³o¼Ë¤ñì¥ý´£¨Ñ¤@Ó¡§¥þ§½¡§ªºtoString¤èªkn²M´·¤@¨Ç¡C
¡@¡@Á`ªº¨Ó»¡¡Aenum§@¬°¤@Ó¥þ·s©w¸qªºÃþ«¬¡A¬O§Æ±æ¯à°÷À°§Uµ{¦¡û¼g¥Xªº¥N½X§ó¥[²³æ©öÀ´¡AÓ¤Hı±o¤@¯ë¤]¤£»Ýn¹L¦hªº¨Ï¥Îenumªº¤@¨Ç°ª¯Å¯S©Ê¡A§_«h´N©M²³æ©öÀ´ªºªì°J·Q¹HI¤F¡C
|