Enum定义
Enum是enumeration(列举)的简写形式,包含在
java.lang包中.熟悉C, C++, C#, 或 Pascal人应该对列举有所了解,先看个例子:
1
|
public
enum
Season{winter,spring,summer,fall};
|
接口方法实现列举
一个enum是定义一组值的对象,它可以包括零个或多个值成员.它是属于enum类型的,一个enum对象中不可有两个或多个相同的属性或值.在次之前的java程序员一般是 用接口的方法实现列举的,如 :
1
2
3
4
|
public
interface Season{
static
winter = 0;
static
spring = 1;
//etc..
}
|
Enum实例
引入了enum的java的列举的编写方便了许多,只须定义一个enum型的对象.enum对象的值都会自动获得一个数字值,从0开始,依次递增.看一个比较简单的enum实现的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
EnumDemo.java
package
net.javagarage.enums;
/*
Wecanloopoverthevaluesweputintotheenum
usingthevalues()method.
NotethattheenumSeasonsiscompiledintoa
separateunit,calledEnumDemo$Seasons.class
*/
public
class
EnumDemo{
/*declaretheenumandaddvaluestoit.notethat,likein#,wedon'tusea‘;’to
endthisstatementandweusecommastoseparatethevalues*/
private
enum
Seasons{
winter,spring,summer,fall
}
//listthevalues
public
static
void
main(String[]args){
for
(Seasonss:Seasons.values()){
System.out.println(s);
}
}
}
|
运行上述代码你会得到 以下结果:
winter
spring
summer
fall
Enum的属性调用:
下面的代码展示了调用enum对象的方法,这也是它通常的用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
packagenet.javagarage.enums;
/*
File:EnumSwitch.java
Purpose:showhowtoswitchagainstthevaluesinanenum.
*/
publicclassEnumSwitch{
privateenumColor{red,blue,green}
//listthevalues
publicstaticvoidmain(String[]args){
//refertothequalifiedvalue
doIt(Color.red);
}
/*notethatyouswitchagainsttheUNQUALIFIEDname.thatis,"caseColor.red:"isa
compilererror*/
privatestaticvoiddoIt(Colorc){
switch
(c){
casered:
System.out.println(
"valueis"
+Color.red);
break
;
casegreen:
System.out.println(
"valueis"
+Color.green);
break
;
caseblue:
System.out.println(
"valueis:"
+Color.blue);
break
;
default
:
System.out.println(
"default"
);
}
}
}
|
为Enums添加属性和方法
enums也可以象一般的类一样添加方法和属性,你可以为它添加
静态和非静态的属性或方法,这一切都象你在一般的类中做的那样.
就是这么的简单.但是有一点是需要注意的,那就是enums的值列表必须紧跟在enum声明,不然编译时将会出错.
Enums
构造函数
:
和类一样enums也可以有自己的
构造函数
尽管enums有这么多的属性,但并不是用的越多越好,如果那样还不如直接用类来的直接.enums的优势在定义int最终
变量仅当这些值有一定特殊含义时.但是如果你需要的是一个类,就定义一个类,而不是enum.