目录
一、枚举
枚举是在 JDK 1.5 引⼊的,主要是⽤来表示⼀组相同业务的值,⽐如我们要实现卖⻋的程序,我们要定义⼀组颜⾊来穷举这辆⻋所提供的所有颜⾊,在没有枚举之前,我们是这样实现的:
以上代码存在的主要问题有以下 3 个:
1 代码可读性低,⽐如,当我们看到数字 2 时,并不能准确的知道它代表的具体是什么颜⾊,我们要去代码⾥⾯查。
2. 参数传递很容易出错,以上代码类型为 int,所以在传递时理论上是可以接受所有的 int 值的,但只有部分值是有效的颜⾊,所有很容易传递值出错。(比如我传入一个4,就会出错 因为只有1 2 3是有效数字)
3. 写法不够优雅,在外层(外边类)调⽤时,看到的都是⼀个个魔法数字(不知道这些数字是什么意思),很让⼈很疑惑。
但有了枚举之后,我们就可以使⽤以下代码来组织所有的颜⾊了:
public enum ColorEnum {
//枚举命名格式:所有的枚举值使用全部字母大写的形式
READ,GREEN,BLACK;
}
创建枚举的方式:
1.1switch判断
public class App {
public static void main(String[] args) {
printColor(ColorEnum.BLACK);
}
public static void printColor(ColorEnum colorEnum){
switch (colorEnum){
case BLACK:
System.out.println("黑色");
break;
case GREEN:
System.out.println("绿色");
break;
case RED:
System.out.println("红色");
break;
default:
System.out.println("未知颜色");
break;
}
}
}
1.2枚举常用方法
1.2.1 values()
以数组形式返回枚举类型的所有成员。
public class App {
public static void main(String[] args) {
eachEnum();
}
/**
* 循环打印所有的枚举类型
*/
private static void eachEnum() {
//得到所有的枚举类型
ColorEnum[] arr=ColorEnum.values();
for (ColorEnum colorEnum:arr){
System.out.println(colorEnum);
}
}
}
1.2.2 ordinal()
获取枚举成员的索引位置。
public class App {
public static void main(String[] args) {
eachEnum();
}
/**
* 循环打印所有的枚举类型
*/
private static void eachEnum(