SE高阶(18):枚举类的用法和应用场景_我只是个程序员。-CSDN博客
public enum Sex {
MAN("男") , MALE("女");
private String sex;
private Sex(String sex) {
this.sex = sex;
}
//重写toString(),返回枚举值的sex属性
@Override
public String toString() {
return this.sex;
}
public static void main(String[] args) {
System.out.println(Sex.MAN.toString());
System.out.println(Sex.MALE.toString());
//输出结果
男
女
}
}
相较于常量而言,枚举类可以另加灵活化,还能对常量进行统一管理。
2.可以在switch语句使用枚举类,switch可以自动检查枚举值是否属于传入的枚举类
public static void main(String[] args) {
//得到枚举数组
SeasonEnum[] se = SeasonEnum.values();
//随机获得其中一个枚举
SeasonEnum rand = Test.getRandomEnum(se);
switch(rand) {
case SPRING:
System.out.println(rand + ", 是" + rand.getSeason());
break;
case SUMMER:
System.out.println(rand + ", 是" + rand.getSeason());
break;
case AUTUMN:
System.out.println(rand + ", 是" + rand.getSeason());
break;
case WINTER:
System.out.println(rand + ", 是" + rand.getSeason());
break;
}
}
/** 根据指定的枚举数组来随机获得其中一个枚举 */
public static <T extends Enum> T getRandomEnum(T[] enumArr) {
int index = (int)(Math.random() * enumArr.length); //生成的下标在枚举数组长度范围之内
T rs = enumArr[index];
return rs;
}
3.枚举类可以在接口中定义,也可以定义在类里面,访问权限的使用和内部类一样,等于使用内部类来维护一些常量的使用。
//能定义在接口中
interface testEnum{
enum State{
ON, OFF;
}
}
//定义成内部枚举类
public class Test {
enum State{
ON, OFF;
}
}