1 枚举类型等效于定义static finally 常量
2. 枚举类型可以有自己的属性(参数)和方法
3. 枚举类型可以以独立的文件存在
最简单的枚举类型:
public enum Belle {
para1, para2, para3, para4;
}
调用:
for (Belle belle : Belle.values()) { // 遍历枚举中所有的对象
System.out.println(belle.name()); // 输出每一个枚举的名称
}
要取出某个指定名称的枚举成员 可用 Belle.para1(注意:因为枚举对象默认是 final 其成员属性都是stastic,final, 直接调用),也可以用 Belle.valueOf("para1")
稍复杂的枚举类型:
public enum Belle {
para1("this is para1"),
para2("this is para3"),
para3("this is para3"),
para4("this is para4");
public final String str; //定义枚举成员属性
private Belle(String str) { //内部方法设定枚举成员属性
this.str = str;
}
}
我们看看编译后,用javap命令查看编译后的内容:
C:\>javap Belle
public final class Belle extends java.lang.Enum{
public static final Belle para1;
public static final Belle para2;
public static final Belle para3;
public static final Belle para4;
public final java.lang.String str;
public static Belle[] values();
public static Belle valueOf(java.lang.String);
static {};
}
这样就每一个枚举成员就有了属性,可以定义多个属性,每个属性必须在内部方法中set(例如this.str = str;)
调用时用这样的格式取值 belle.str
枚举成员就的属性可以不光是字符串,可以是任意对象
更复杂的枚举类型:
public enum Belle {
para1("this is para1") {
public String event() { //实现枚举成员的方法
return "i am a mtthod of para1";
}
},
para2("this is para3") {
public String event() { //实现枚举成员的方法
return "i am a mtthod of para2";
}
},
para3("this is para3") {
public String event() { //实现枚举成员的方法
return "i am a mtthod of para3";
}
};
public final String str; //定义枚举成员属性
Belle(String str) { //内部方法设定枚举成员属性
this.str = str;
}
public abstract String event();//定义枚举成员的方法
}
这样就每一个枚举成员就有了自己的方法,可以定义多个方法,方法必须以抽象方法的形式作声明(例如abstract String event();) 一个方法一旦定义了就必须在每一个枚举成员中得到实现。
调用方法时用这样的格式 belle1.event();