溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java 1.5新特性Enum的用法

發(fā)布時間:2020-08-18 13:53:06 來源:ITPUB博客 閱讀:152 作者:lotuszm 欄目:編程語言
Enum是enumeration(列舉)的簡寫形式,包含在java.lang包中.
public enum Season { winter, spring, summer, fall }


一個enum是定義一組值的對象,它可以包括零個或多個值成員.它是屬于enum類型的,一個enum對象中不可有兩個或多個相同的屬性或值.在次之前的java程序員一般是 用接口的方法實(shí)現(xiàn)列舉的,[@more@]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.
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI