(一)枚举的介绍与使用
- 在JDK1.5中添加了一个新特性,即 enum 关键字。
- 使用enum关键字可以创建枚举类。
- 枚举类型的实例是常量,按照命名规则使用大写字母。
- 使用enum关键字定义的枚举类本质上就相当于一个Class定义的类,继承了java.lang.Enum父类。
- 所有的枚举类默认继承于Enum类.
- 创建enum时,系统会自动创建toString()方法,用来直接显示enum实例的名字。
- 枚举最大的特点就是只有几个指定的对象可以使用。
- Enum类中的方法:
方法 | 作用 |
---|---|
protected Enum(String name, int ordinal) | 构造方法 |
public final String name() | 取得枚举名字 |
public final int ordinal() | 取得枚举序号,序号从0开始 |
static values() | 按照enum常量的声明顺序,产生由这些常量值构成的数组 |
举例1:
使用enum创建一个枚举类:
package www.fanfan.com;
enum Color{
//类里面都是枚举的实例化,都是常量,使用大写字母
RED,YELLOW,BLUE;
}
public class EnumTest {
public static void main(String[] args) {
//创建实例化对象
Color blue = Color.BLUE;
//打印枚举类对象,创建enum时,自动创建了toString()方法,直接显示enum实例的名字。
System.out.println(blue);
//调用name()方法,获得枚举名字
System.out.println(blue.name());
//调用ordinal()方法,获得枚举序号
System.out.println(blue.ordinal());
//使用values()方法,打印枚举类中的每一个实例化对象
for (Color c:Color.values()){
System.out.print(c+" ");
}
}
}
(二)enum 与 Enum 的区别
enum是一个关键字,使用enum定义的类实际上就是一个继承了Enum这个抽象类。
(三)定义枚举的结构
- 枚举中,不仅仅可以只有枚举对象,可以在枚举中定义属性,方法,实现接口。
- 如果枚举中有很多内容,有枚举对象,属性,方法等;枚举对象要放在第一行;
- 构造方法私有化;
- 枚举还可以实现接口,这样枚举中的每一个对象都变成了接口对象。
举例2:
package www.fanfan.com;
enum Color{
RED("123"),YELLOW("黄色"),BLUE("蓝色");
private String str;
private Color(String str) {
this.str = str;
}
public String toString(){
return this.str;
}
}
public class EnumTest {
public static void main(String[] args) {
System.out.println(Color.BLUE);
}
}
(四)枚举与switch
因为switch要在有限的可能值集合进行选择,因此与enum是绝佳的组合。
举例4:
package www.fanfan.com;
enum Sex{
MALE,FAMALE;
}
public class EnumAndSwitch {
Sex sex;
public EnumAndSwitch(Sex sex) {
this.sex = sex;
}
public void describe(){
switch (sex){
case MALE: System.out.println("男");
break;
case FAMALE: System.out.println("女");
break;
default:
break;
}
}
public static void main(String[] args) {
EnumAndSwitch eas1 = new EnumAndSwitch(Sex.MALE);
EnumAndSwitch eas2 = new EnumAndSwitch(Sex.FAMALE);
eas1.describe();
eas2.describe();
}
}