什么是枚举
枚举是从java5开始提供的一种新的数据类型,是一个特殊的类,就是固定的多个常量集合
格式:
[修饰符] enum 枚举类名
{
常量A,常量B
}
在底层直接继承enum类,Enum是所有枚举的父类
特点:(只是轻微的总结)
枚举的直接父类java.lang.Enum,不显示继承Enum
枚举相当于一个类,可以定义构造方法,成员变量,普通方法和抽象方法
默认私有的构造方法,即使不写访问权限也是private,(底层没有无参构造器)
每一个实例都是用全局变量表示,枚举对象是固定的,个数有限,不能使用new关键字
枚举实例必须在枚举体的最开始部分,最后要用分号隔开
枚举实例后面有花括号,表示是枚举的匿名内部类对象
枚举的使用:
枚举中都是全局公共的静态常量,可以直接使用类名调用
Enum是所有枚举的父类,所以可以调用Enum中的方法
String name = 枚举对象.name();//返回常量名称
int ordinal = 枚举对象.ordinal();// 返回对象的序号,从0开始
String str = 枚举对象.toString();// 返回枚举对象的常量名称
编译器生成的枚举类是静态方法
枚举类型[] values(): 返回当前枚举类型所有的常量,使用数组封装
枚举类型[] valueof(String name); 把一个指定名称字符串转换为当前枚举类型中同名的常量
从java5开始出现枚举,switch也支持枚举
switch只支持int类型,支持枚举是因为底层使用的枚举对象的ordinal,而ordinal的类型依然是int类型
推荐书籍<<effective java>>