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;
	}
}