枚举类也是一种特殊形式的Java类
枚举类中声明的每一个枚举值代表枚举类的一个实例对象
与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。
枚举类也可以实现接口、或继承抽象类。
public class Student {
private String name;
private Grade grade;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
public Grade getGrade() {
return grade;
public void setGrade(Grade grade) {
this.grade = grade;
}
//让枚举中的每一个对象拥有更多的功能:拥有自己的属性、方法
enum Grade{ //类
//A.getLocaleValue() "优"
//B.getLocaleValue() "良"
//E.getLocaleValue() "差"
A("100-90"){
public String getLocaleValue(){
return "优";
}
},B("89-80"){
return "良";
,C("79-70"){
return "中";
,D("69-60"){
return "及格";
,E("59-0"){
return "差";
}; //类的一个对象 A(100-90)
private String value;
private Grade(String value){
this.value = value;
public String getValue() {
return value;
public abstract String getLocaleValue();
//这也是一种单态
enum A{
A;
public enum WeekDay {
MON("星期一"),TUE("星期二"),WED("星期一"),THU("星期一"),FRI("星期一"),SAT("星期一"),SUN("星期一");
private WeekDay(String value){
public String toLocaleString(){
Juit测试类
public class Demo1 {
/**枚举的几个常用方法
* @param args
*/
public static void main(String[] args) {
Grade g = Grade.A;
String value = g.getValue();
System.out.println(value);
value = g.getLocaleValue();
//枚举的几个常用方法
System.out.println(Grade.C.name());
System.out.println(Grade.C.ordinal());
//把字符串转枚举1
Grade g1 = Grade.valueOf(Grade.class, "E");
System.out.println(g1.getValue());
//把字符串转枚举2
Grade g3 = Grade.valueOf("A");
System.out.println(g3.getValue());
//得到枚举类的所有成员
Grade gs[] = Grade.values();
for(Grade g2 : gs){
System.out.println(g2.name());
WeekDay wd = WeekDay.MON;
System.out.println(wd.toLocaleString());