目录
1、声明
是一个特定类型的类。所有枚举都是Java中的新类java.lang.Enum的隐式子类
不能手工进行子类定义
声明:
- 在枚举中需写全该枚举类型变量的每一个值,这些值称为枚举元素。
- 命名规范:枚举名称,首字母大写,驼峰标识;其枚举值,全大写,下划线分割;
- 任意两个枚举成员不能具有相同的名称,且它的常数值必须在该枚举的基础类型的范围之内,多个枚举成员之间使用逗号分隔。
使用:
- 枚举名 变量名=枚举名.枚举值 [使用枚举名.枚举值取得每一个枚举值]
- 枚举名 变量名;
- 变量名=枚举名.枚举值
2、代码
-
声明(性别)
public enum Gender {
MALE,
FEMALE
}
public class GenderTest {
public static void main(String[] args) {
Gender g = null; //定义枚举变量
g = Gender.MALE;//给枚举赋//只能获取从已经定义好的枚举列表中枚举值
System.out.println(g);
}
}
-
switch(红绿灯)
public enum Signal {
RED, YELLOW, GREEN
}
public class TrafficLight {
Signal color = Signal.GREEN;
public void change() {
switch (color) {
case RED: {
color = Signal.GREEN;
break;
}
case GREEN: {
color = Signal.YELLOW;
break;
}
case YELLOW: {
color = Signal.RED;
break;
}
}
}
public static void main(String[] args) {
TrafficLight light = new TrafficLight();
//初始化信号灯颜色
light.color = Signal.GREEN;
//改变红绿灯
light.change();
System.out.println(light.color);
}
}
3、常用方法
-
values() 方法
通过调用枚举类型的 values() 方法可以将枚举的所有成员以数组形式返回,也可以通过该方法获取枚举类型的成员。
public class SignalValuesTest {
public static void main(String[] args) {
//value() 获取定义枚举值列表,以数组的形式返回
Signal[] values=Signal.values();
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
}
}
}
-
compareTo() ,valueOf()方法
调用 valueOf() 方法获取枚举的一个成员,再调用 compareTo() 方法进行比较,并输出结果
Enum默认实现了java.lang.Comparable接口。
枚举类型 变量=枚举类型.valueOf("枚举值")
- 如果指定的数与参数相等返回0。
- 如果指定的数小于参数返回 -1。
- 如果指定的数大于参数返回 1。
public enum Gender {
AAA,
MALE,
FEMALE
}
public class GenderTestForString {
public static void main(String[] args) {
//把字符串转成枚举类型
//把字符串转成对象?可以
//Gender g=Gender.valueOf("MALE1");//非法参数异常java.lang.IllegalArgumentException
Gender g = Gender.valueOf("MA