Jsdk5.0中新增枚舉enum類型使用例解

來源:互聯網
上載者:User
js
作者:Junsan Jin

日期:2005-03-25

郵箱:junsan21@126.com ; junnef21@sohu.com

Jsdk5.0中新增了很多的特性,如泛型、增強迴圈、改進的裝、拆箱、靜態引入等,大大增強了java語言的易用性。







我現在正在做一個從com+(dcom)平台到j2ee平台移植的項目,中間有很多枚舉類型的定義,以前做起來要引入第三方類庫,或者自己寫類庫,或者乾脆定義成靜態變數使用,很不方便,而且可能會產生很多問題。Jsdk5.0的發布正好解決了這些問題。







這裡就枚舉的應用舉一個小例子說明,相信這樣更容易理解java中枚舉的用法。







       普通無值枚舉類型可定義成如下的形式:







private enum MyColor{  Red, Yellow, Blue }







       但我們用的時候很多情況下會用到值,所以下面的測試類別更能說明java中枚舉類型的強大功能,代碼如下:







class EnumTest







{







       private enum MyColor//定義一個MyColor的枚舉類型







       {







              Red(1),//定義枚舉類型的一個成員







              Yellow(2),







              Blue(3);







             







              private final int num;//序號的儲存屬性,由於序號通常比較穩定不希望被改變,所以聲明成final







             







              MyColor(int num) //類似於類構造器的初始化方式,其會自動迴圈給成員賦值







              {







                     this.num = num;







              }







             







              private int getNum()//取得對應成員的序號







              {







                     return num;







              }                                







       }    







      







       public void showColor()//暴露給外部的提供者







       {







              for ( MyColor mycolor : MyColor.values() )//這裡用的新的增強迴圈方式







                     System.out.println( mycolor + " = " + mycolor.getNum());







             







MyColor scolor = MyColor.Blue;  







              System.out.println(scolor);








 


 



              if(scolor.getNum()==3)//這裡就是序號比較







              {







                     System.out.println("true");







              }







       }







      







       public static void main(String args[])//測試我們的類







       {







              EnumTest test = new EnumTest();







              test.showColor();







       }







}








 


 



在命令列下輸入:







javac -source 1.5 EnumTest.java







註:有些5.0編譯器預設以1.4.2為預設編譯屬性,所以,新特性無法識別,因此,要在編譯命令列中加入 –source 1.5指定使用新的特性。







編譯檔案,然後輸入







java EnumTest







運行結果為:







Red = 1







Yellow = 2







Blue = 3







Blue序號為:3







True








 


 



對於枚舉類型的成員我們不僅可以指定序號,還可以指定其多個屬性,還可以寫很多方法在裡面,因為java中的枚舉就是物件導向的,是一個真正的類,就把java中的枚舉當成一個類操作就行了。如sdk帶的文檔中的例子:







public enum Planet {



    MERCURY (3.303e+23, 2.4397e6),



    VENUS   (4.869e+24, 6.0518e6),



    EARTH   (5.976e+24, 6.37814e6),



    MARS    (6.421e+23, 3.3972e6),



    JUPITER (1.9e+27,   7.1492e7),



    SATURN  (5.688e+26, 6.0268e7),



    URANUS  (8.686e+25, 2.5559e7),



   

NEPTUNE (1.024e+26, 2.4746e7),



    PLUTO   (1.27e+22,  1.137e6);




 


    private final double mass;   // in kilograms



    private final double radius; // in meters



    Planet(double mass, double radius) {



        this.mass = mass;



        this.radius = radius;



    }



    private double mass()   { return mass; }



    private double radius() { return radius; }




 


    // universal gravitational constant  (m3 kg-1 s-2)



    public static final double G = 6.67300E-11;




 


    double surfaceGravity() {



        return G * mass / (radius * radius);



    }



    double surfaceWeight(double otherMass) {



        return otherMass * surfaceGravity();



    }



}



具體請參考sdk文檔中的$jdk-1_5_0-doc$\docs\guide\language\enums.html。








相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。