<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人應該對列舉有所了解,先看個例子:

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

     

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

    public interface Season {

       static winter = 0;

       static spring = 1; //etc..

    }

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

    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也可以象一般的類一樣添加方法和屬性,你可以為它添加靜態和非靜態的屬性或方法,這一切都象你在一般的類中做的那樣.

    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構造函數:

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

    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的優勢在定義int最終變量僅當這些值有一定特殊含義時.但是如果你需要的是一個類,就定義一個類,而不是enum.

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

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


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

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲VA成无码人在线观看天堂| 亚洲第一AV网站| 亚洲日产2021三区在线| 久久免费观看国产精品88av| 亚洲大成色www永久网站| 国产一区二区三区免费| 亚洲欧洲在线观看| 亚洲JLZZJLZZ少妇| 男女交性永久免费视频播放| 亚洲精品无码专区| 香蕉高清免费永久在线视频| 看免费毛片天天看| 久久精品视频免费看| 少妇中文字幕乱码亚洲影视| 亚洲免费福利视频| 亚洲国产精品尤物YW在线观看| 亚洲AV综合色一区二区三区| 污污网站免费观看| 亚洲av无码不卡久久| 日本免费一区尤物| 国产区在线免费观看| 免费高清在线爱做视频| 国产AV日韩A∨亚洲AV电影 | 亚洲精品国产手机| 手机永久免费的AV在线电影网| 亚洲伊人久久成综合人影院| 亚洲真人无码永久在线观看| 亚洲免费黄色网址| 亚洲av永久无码精品秋霞电影秋 | 无套内射无矿码免费看黄| 超清首页国产亚洲丝袜| 91久久成人免费| 国产午夜亚洲精品不卡| 亚洲AV无码成人精品区蜜桃| 久久精品免费全国观看国产| 免费激情网站国产高清第一页| 亚洲AV人无码激艳猛片| 女人被免费视频网站| 成人黄网站片免费视频 | 毛片免费观看的视频| 亚洲一区二区三区在线观看精品中文 |