基本介绍
在java中有一种特殊的类型就是枚举类,对于一个有限的有固定值的集合,我们就可以考虑使用枚举类来进行表示,例如服装的大小为 小,中,大,超大。一个颜色集合为红色,蓝色,黄色,绿色
快速使用
枚举类使用enum进行标识,下面就是一个例子
public enum Color {
BLUE, RED, GREEN, YELLOW
}
上面的代码我就定义了一个枚举类Color,里面有4个值,就代表4个对象(理解为4个Color实例对象),我们不能够通过new来进行构造对象,我们访问就是通过对象.属性来进行访问
public static void main(String[] args) {
Color blue = Color.BLUE;
Color red = Color.RED;
Color green = Color.GREEN;
Color yellow = Color.YELLOW;
}
对于枚举类的比较,我们通过==就可以了,不需要使用equals
Color blue1 = Color.BLUE;
Color blue2 = Color.BLUE;
System.out.println(blue1 == blue2); // 输出true
字段、方法、构造器
我们可以为枚举类添加构造器,方法和字段,现在我们就来对上面的代码进行扩展
public enum Color {
BLUE("蓝色"), RED("红色"), GREEN("绿色"), YELLOW("黄色");
private String description;
Color(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
我们在枚举类里面添加了一个description字段,用于颜色的中文表述,提供了一个构造器,我们在定义BLUE,RED,GREEN,YELLOW的时候就可以传入一个description。这样做有什么好处呢?
下面我就通过IDEA创建该Color对象,查看IDEA的提示
可以发现我们再使用枚举类的时候就可以很清楚的知道这个枚举类是用来表示什么的。
Color color = Color.BLUE;
System.out.println(color.getDescription()); // 输出蓝色
我们还可以使用枚举类里面的方法。
枚举类方法
在讲解方法之前,需要说明的是所有的枚举类都继承于Enum类,就好像所有类都继承Object类一样,下面介绍的方法都是基于Enum类的
toString方法
这个方法会返回枚举常量名
Color green = Color.GREEN;
Color yellow = Color.YELLOW;
System.out.println(green.toString()); // 输出GREEN
System.out.println(yellow.toString());// 输出YELLOW
valueOf方法
这个方法用于构建枚举类,传入枚举类常量名即可
Color color = Color.valueOf("RED");
System.out.println(color.getDescription()); // 输出红色
// 如果不存在传入的枚举常量,那么会报错
Color color1 = Color.valueOf("xxx");
输出如下
values方法
使用枚举类名进行调用,会返回所有枚举常量的数组
Color[] colors = Color.values();
for (Color c : colors) {
System.out.println(c);
}
ordinal方法
这个方法会返回枚举常量在enum中声明的位置,从0开始
Color red = Color.RED;
int ordinal = red.ordinal();
System.out.println(ordinal);
在Color中RED是第二个定义的,所以ordinal会返回1