程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Jsdk5.0中新增枚舉enum類型使用例解

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

編輯:關於JAVA

作者:Junsan Jin

日期:2005-03-25

郵箱:[email protected] ; [email protected]

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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved