在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。
例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。
在java中如何更好的使用这些“数据集”呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。
package
com.ljq.test;
/**
* 枚举用法详解
*
*
@author
jiqinlin
*
*/
public
class
TestEnum {
/**
* 普通枚举
*
*
@author
jiqinlin
*
*/
public
enum
ColorEnum {
red, green, yellow, blue;
}
/**
* 枚举像普通的类一样可以添加属性和方法,可以为它添加静态和非静态的属性或方法
*
*
@author
jiqinlin
*
*/
public
enum
SeasonEnum {
//
注:枚举写在最前面,否则编译出错
spring, summer, autumn, winter;
private
final
static
String position
=
"
test
"
;
public
static
SeasonEnum getSeason() {
if
(
"
test
"
.equals(position))
return
spring;
else
return
winter;
}
}
/**
* 性别
*
* 实现带有构造器的枚举
*
*
@author
jiqinlin
*
*/
public
enum
Gender{
//
通过括号赋值,而且必须带有一个参构造器和一个属性跟方法,否则编译出错
//
赋值必须都赋值或都不赋值,不能一部分赋值一部分不赋值;如果不赋值则不能写构造器,赋值编译也出错
MAN(
"
MAN
"
), WOMEN(
"
WOMEN
"
);
private
final
String value;
//
构造器默认也只能是private, 从而保证构造函数只能在内部使用
Gender(String value) {
this
.value
=
value;
}
public
String getValue() {
return
value;
}
}
/**
* 订单状态
*
* 实现带有抽象方法的枚举
*
*
@author
jiqinlin
*
*/
public
enum
OrderState {
/**
已取消
*/
CANCEL {
public
String getName(){
return
"
已取消
"
;}},
/**
待审核
*/
WAITCONFIRM {
public
String getName(){
return
"
待审核
"
;}},
/**
等待付款
*/
WAITPAYMENT {
public
String getName(){
return
"
等待付款
"
;}},
/**
正在配货
*/
ADMEASUREPRODUCT {
public
String getName(){
return
"
正在配货
"
;}},
/**
等待发货
*/
WAITDELIVER {
public
String getName(){
return
"
等待发货
"
;}},
/**
已发货
*/
DELIVERED {
public
String getName(){
return
"
已发货
"
;}},
/**
已收货
*/
RECEIVED {
public
String getName(){
return
"
已收货
"
;}};
public
abstract
String getName();
}
public
static
void
main(String[] args) {
//
枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值
ColorEnum colorEnum
=
ColorEnum.blue;
switch
(colorEnum) {
case
red:
System.out.println(
"
color is red
"
);
break
;
case
green:
System.out.println(
"
color is green
"
);
break
;
case
yellow:
System.out.println(
"
color is yellow
"
);
break
;
case
blue:
System.out.println(
"
color is blue
"
);
break
;
}
//
遍历枚举
System.out.println(
"
遍历ColorEnum枚举中的值
"
);
for
(ColorEnum color : ColorEnum.values()){
System.out.println(color);
}
//
获取枚举的个数
System.out.println(
"
ColorEnum枚举中的值有
"
+
ColorEnum.values().length
+
"
个
"
);
//
获取枚举的索引位置,默认从0开始
System.out.println(ColorEnum.red.ordinal());
//
0
System.out.println(ColorEnum.green.ordinal());
//
1
System.out.println(ColorEnum.yellow.ordinal());
//
2
System.out.println(ColorEnum.blue.ordinal());
//
3
//
枚举默认实现了java.lang.Comparable接口
System.out.println(ColorEnum.red.compareTo(ColorEnum.green));
//
-1
//
--------------------------
System.out.println(
"
===========
"
);
System.err.println(
"
季节为
"
+
SeasonEnum.getSeason());
//
--------------
System.out.println(
"
===========
"
);
for
(Gender gender : Gender.values()){
System.out.println(gender.value);
}
//
--------------
System.out.println(
"
===========
"
);
for
(OrderState order : OrderState.values()){
System.out.println(order.getName());
}
}
}