读者可订阅专栏:Java开发指南 |【CSDN@秋说】
Java 枚举(enum)
枚举(Enumeration)是一种特殊的数据类型,用于表示一组具名的常量集合,例如表示星期几、月份、颜色等。
Java 枚举类使用 enum 关键字来定义,各个常量使用逗号进行分割。
枚举类的声明
在类外声明枚举类:
enum color{
orange,green,grey,pink,blue;
}
public class Ice{
public static void main(String[] args) {
color i=color.blue;
System.out.println(i);
}
}
在内部类中声明枚举类:
public class Ice{
enum color{
orange,green,grey,pink,blue;
}
public static void main(String[] args) {
color i=color.blue;
System.out.println(i);
}
}
迭代枚举元素
可以使用 for 语句来迭代枚举元素:
public class Ice{
enum color{
orange,green,grey,pink,blue;
}
public static void main(String[] args) {
for(color i:color.values())
System.out.println(i);
}
}
在 switch 中使用枚举类
枚举类常应用于 switch 语句中:
public class Ice{
enum color{
orange,green,grey,pink,blue;
}
public static void main(String[] args) {
color ice=color.blue;
switch(ice)
{
case orange:
System.out.println("橙色");
break;
case green:
System.out.println("绿色");
break;
case blue:
System.out.println("蓝色");
break;
default:
break;
}
}
}
values(), ordinal() 和 valueOf() 方法
在应用枚举类时,常使用values(), ordinal() 和 valueOf() 三种方法。
1、values() 返回枚举类中所有的值。
2、ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
3、valueOf()方法返回指定字符串值的枚举常量。
public class Ice{
enum color{
orange,green,grey,pink,blue;
}
public static void main(String[] args) {
//调用 values()
color[] ice = color.values();
//迭代枚举
for(color col:ice)
{
//查看索引
System.out.println(col+" at index "+col.ordinal());
}
//返回枚举常量
System.out.println(color.valueOf("blue"));
//若不存在,则报错 IllegalArgumentException
System.out.println(color.valueOf("red"));
}
}
枚举类成员
枚举跟普通类一样可以用自己的变量、方法和构造函数。
其中构造函数只能使用 private 访问修饰符,所以外部无法调用,因此只能通过枚举定义的常量来访问。
示例如下:
enum Direction {
NORTH("North"),
EAST("East"),
SOUTH("South"),
WEST("West");
private String name;
// 构造函数是私有的,只能在枚举内部使用
private Direction(String name) {
this.name = name;
}
// 获取方向名称
public String getName() {
return name;
}
}
public class Ice {
public static void main(String[] args) {
Direction north = Direction.NORTH;
System.out.println("Name: " + north.getName());
}
}
枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。