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()); } }
枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。