1、含义:
个人的理解是,枚举就相当于是程序员自己定义的一组变量集合,当需要使用这些变量时,你只能在这个定义好的变量集合中取。
2、作用:
(1)限定取值范围,所有的内容只能从指定的范围中取得;
(2)枚举还以按索引走,枚举的查找、比较、遍历都较为方便
(3)枚举
限定了取值范围,因此它的数据安全相对较高一些。
(4)枚举定义的类相对比较明了、实用。
3、用法:
(1)定义:
public
enum
State
{
SUCCESS
,
RETRY
,
ERROR
,
CRITICAL
,
BLOCKED
}
(2)调用:State state= State.SUCCESS;
(3)用法总结:
定义枚举类,本质上也是一个普通的java类,它也可以声明构造函数(但是只能是私有或者包级私有)、成员变量和成员方法,还能实现接口,值得注意的是,成员变量和成员方 法的声明必须放在所有枚举值定义的后面。
enum定义时,定义出来的类型是默认继承java.lang.Enum类,并非Object类,它默认实现了java.lang.Comparable和 java.io.Serializable接口。所有的枚举类型都是final类,它没有子类。枚举值都是public static final,枚举值是常量,故通常应该大写。
(4)常用的方法:
int compareTo方法
String name():返回枚举实例的名称
int ordinal() 返回枚举值在枚举中的索引
String toString()返回枚举的实例名称 比name更常用
valueOf()
values()
用法如下:
public class EnumTest {public static void main(String[] args){State sta =State.SUCCESS;System.out.println(sta );//FRI
System.out.println(sta.name());//FRI
System.out.println(sta .ordinal());//4
System.out.println(State.valueOf("SUN").toLocaleString());//星期日
System.out.println(sta.values().length);//7 获取枚举长度
}
}
遍历:
for(State st:State.values()){System.out.println( st ); }
(5)枚举的构造函数:
public enum Gender {
MALE("男"),FEMALE("女");
private String name;
private Gender(String name){
this.name =name;
}
public String getName(){
return this.name;
}
private String name;
private Gender(String name){
this.name =name;
}
public String getName(){
return this.name;
}
(6)适用范围:
- 包中、类中,不能在方法中;
- 使用场合:从另一个函数得到一个值,但是这个值只能够在一个范围内,实用枚举可以限制这个函数传递进来的值。
- 当考虑在类中要指定选项必须为某些类型时。
(7)注意事项
枚举也像普通的类一样可以添加属性和方法,可以是静态的,也可以是非静态的
注意:枚举定义时,必须写类体在最前面,否则会编译出错。