一.什么是枚举类
一个类的对象是固定的结构,就是枚举类
二.枚举类说明
1.枚举类可以继承或者实现接口,但是它继承了java.lang.Enum类的,所以它不能继承简单的类,简单的类父类是Object类,
2.使用enum定义,非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类
3.枚举类的构造器只能用private修饰
4.枚举类的所有实例必须放到枚举类的第一行显示,默认用public static final修辞
三.枚举类的定义
1.简单枚举类
enum Subject{
MATH,CHINESE,ENGLISH,HISTORY
}
public enum Season implements Climate {
SPRINT("3") {
@Override
public void showClimate() {
Log.d(TAG, "warm");
}
}, SUMMER("6") {
@Override
public void showClimate() {
Log.d(TAG, "hot");
}
}, AUTUMN("9") {
@Override
public void showClimate() {
Log.d(TAG, "windy");
}
}, WINTER("12") {
@Override
public void showClimate() {
Log.d(TAG, "cold");
}
};
private final String month;
Season(String month) {
this.month = month;
}
}
2.含有抽象方法的枚举类
public enum Dice {
ONE {
@Override
int onResult() {
return 1;
}
},
TWO {
@Override
int onResult() {
return 2;
}
},
THREE {
@Override
int onResult() {
return 3;
}
},
FOUR {
@Override
int onResult() {
return 4;
}
},
FIVE {
@Override
int onResult() {
return 5;
}
},
SIX {
@Override
int onResult() {
return 6;
}
};
abstract int onResult();
}
四.枚举类方法
Season sprint = Enum.valueOf(Season.class, "SPRINT");
sprint.compareTo(Season.AUTUMN);//Enum类中位置在前是正整数,后面是负整数
sprint.name();//枚举类名字
sprint.ordinal();//枚举类中的位置