posts - 64,  comments - 9,  trackbacks - 0

          Enum是enumeration(列舉)的簡寫形式,包含在java.lang包中.熟悉C, C++, C#, 或 Pascal人應該對列舉有所了解,先看個例子:

          public enum Season { winter, spring, summer, fall }

           

          一個enum是定義一組值的對象,它可以包括零個或多個值成員.它是屬于enum類型的,一個enum對象中不可有兩個或多個相同的屬性或值.在次之前的java程序員一般是 用接口的方法實現(xiàn)列舉的,如 :

          public interface Season {

             static winter = 0;

             static spring = 1; //etc..

          }

          引入了enum的java的列舉的編寫方便了許多,只須定義一個enum型的對象.enum對象的值都回自動獲得一個數(shù)字值,從0開始,依次遞增.看一個比較簡單的enum實現(xiàn)的例子:

          EnumDemo.java

          package net.javagarage.enums;

           

          /*

          We can loop over the values we put into the enum

          using the values() method.

          Note that the enum Seasons is compiled into a

          separate unit, called EnumDemo$Seasons.class

          */

          public class EnumDemo {

           

                /*declare the enum and add values to it. note that, like in C#, we don't use a ; to

           end this statement and we use commas to separate the values */

           

                private enum Seasons { winter, spring,

                 summer, fall }

           

                //list the values

                public static void main(String[] args) {

                      for (Seasons s : Seasons.values()){

                            System.out.println(s);

                      }

                }

           

          }
          運行上述代碼你回得到 以下結果:

          winter

          spring

          summer

          fall

          Enum的屬性調用:

          下面的代碼展示了調用enum對象的方法,這也是它通常的用法:

          package net.javagarage.enums;

          /*

          File: EnumSwitch.java

          Purpose: show how to switch against the values in an enum.

          */

           

          public class EnumSwitch {

           

                private enum Color { red, blue, green }

           

                //list the values

                public static void main(String[] args) {

                      //refer to the qualified value

                      doIt(Color.red);

           

                }

           

                /*note that you switch against the UNQUALIFIED name. that is, "case Color.red:" is a

           compiler error */

           

                private static void doIt(Color c){

           

                switch (c) {

                case red:

                      System.out.println("value is " + Color.red);

                      break;

                case green:

                      System.out.println("value is " + Color.green);

                      break;

                case blue:

                      System.out.println("value is : " + Color.blue);

                      break;

                default :

                      System.out.println("default");

                }

                }
          }

          為enums添加屬性和方法

          enums也可以象一般的類一樣添加方法和屬性,你可以為它添加靜態(tài)和非靜態(tài)的屬性或方法,這一切都象你在一般的類中做的那樣.

          package net.javagarage.enums;

           

          /*

          File: EnumDemo.java

          Purpose: show how to use an enum that also defines its own fields and methods

          */

           

          public class EnumWithMethods {

           

          //declare the enum and add values to it.

           

          public enum Season {

           

                winter, spring, summer, fall;

           

                private final static String location = "Phoenix";

           

                public static Season getBest(){

                      if (location.equals("Phoenix"))

                            return winter;

                      else

                            return summer;

           

                }

           

                public static void main(String[] args) {

           

                System.out.println(Season.getBest());

                }

          }

          就是這么的簡單.但是有一點是需要注意的,那就是enums的值列表必須緊跟在enum聲明,不然編譯時將會出錯.

          Enums構造函數(shù):

          和類一樣enums也可以有自己的構造函數(shù),如下:

          package net.javagarage.enums;

           

          public class EnumConstructor {

           

                public static void main(String[] a) {

           

                      //call our enum using the values method

                      for (Temp t : Temp.values())

                            System.out.println(t + " is : " + t.getValue());

                }

           

                //make the enum

                public enum Temp {

                      absoluteZero(-459), freezing(32),

                      boiling(212), paperBurns(451);

           

                //constructor here

                Temp(int value) {

                      this.value = value;

                }

           

                //regular field?but make it final,

                //since that is the point, to make constants

                private final int value;

           

                //regular get method

                public int getValue() {

                return value;

                }

           

                }

          }
          輸出結果是:

          absoluteZero is : -459

          freezing is : 32

          boiling is : 212

          paperBurns is : 451

          盡管enums有這么多的屬性,但并不是用的越多越好,如果那樣還不如直接用類來的直接.enums的優(yōu)勢在定義int最終變量僅當這些值有一定特殊含義時.但是如果你需要的是一個類,就定義一個類,而不是enum.

          0
          0
          (請您對文章做出評價)
          posted on 2009-10-19 12:05 super_nini 閱讀(271) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 苏州市| 泰和县| 泊头市| 邳州市| 新乡县| 旬阳县| 东光县| 沛县| 隆尧县| 忻城县| 阿坝县| 渭源县| 紫阳县| 余庆县| 扎囊县| 重庆市| 宝丰县| 城口县| 辽阳市| 黄骅市| 贵港市| 象山县| 普洱| 云霄县| 沙雅县| 临泉县| 皋兰县| 宁晋县| 莒南县| 宜兰县| 繁昌县| 华蓥市| 综艺| 松原市| 莱阳市| 枣阳市| 邹城市| 南岸区| 禹州市| 新建县| 鞍山市|