<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 64,  comments - 9,  trackbacks - 0

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

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

     

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

    public interface Season {

       static winter = 0;

       static spring = 1; //etc..

    }

    引入了enum的java的列舉的編寫方便了許多,只須定義一個enum型的對象.enum對象的值都回自動獲得一個數(shù)字值,從0開始,依次遞增.看一個比較簡單的enum實(shí)現(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);

                }

          }

     

    }
    運(yùn)行上述代碼你回得到 以下結(jié)果:

    winter

    spring

    summer

    fall

    Enum的屬性調(diào)用:

    下面的代碼展示了調(diào)用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());

          }

    }

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

    Enums構(gòu)造函數(shù):

    和類一樣enums也可以有自己的構(gòu)造函數(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;

          }

     

          }

    }
    輸出結(jié)果是:

    absoluteZero is : -459

    freezing is : 32

    boiling is : 212

    paperBurns is : 451

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

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

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


    網(wǎng)站導(dǎo)航:
     
    <2009年10月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在线观看免费无码视频| 久久久久久亚洲精品中文字幕| 亚洲国产成a人v在线观看| 永久免费A∨片在线观看| 国产亚洲精品无码成人| 成人免费ā片在线观看| 亚洲精品国产va在线观看蜜芽| 亚洲精品乱码久久久久久V| 成年女人永久免费观看片| 亚洲成在人线在线播放无码| 日本免费人成视频播放| 黄色免费网址大全| 亚洲日韩在线第一页| AAA日本高清在线播放免费观看| 亚洲精品卡2卡3卡4卡5卡区| 免费视频精品一区二区三区| 亚洲日本国产精华液| 成人看的午夜免费毛片| 菠萝菠萝蜜在线免费视频| 亚洲中文字幕不卡无码| 免费A级毛片无码A∨中文字幕下载| 亚洲理论片在线中文字幕| 午夜神器成在线人成在线人免费| 美女免费精品高清毛片在线视| 亚洲婷婷国产精品电影人久久| 免费无码H肉动漫在线观看麻豆| 亚洲视频国产精品| 午夜一区二区免费视频| 日韩a毛片免费观看| 亚洲视频在线观看一区| 大陆一级毛片免费视频观看 | 国产国产人免费人成成免视频| 国产精品亚洲精品日韩已满| 波多野结衣在线免费视频| 国产精品亚洲精品日韩动图| 国产亚洲精品无码成人| 免费毛片网站在线观看| 国产成人无码区免费内射一片色欲| 亚洲丝袜中文字幕| 亚洲伊人成无码综合网| 免费无码AV片在线观看软件|