简介
枚举类型是一种特殊的数据类型,枚举类型变量的值只能是预定义的常量,通常用枚举类型来表示固定的常量集合。比如,方向分为东南西北,则可以定义一个枚举类型Direction,它的值为EAST、SOUTH、WEST、NORTH。
如何创建枚举类型
创建枚举类型非常简单,使用enum
关键字代替class
关键字来创建一个类,然后在类里面定义一组常量。示例如下:
public enum Direction {
EAST, SOUTH, WEST, NORTH
}
如何使用枚举类型
使用枚举类的示例代码如下:
public void test() {
printDirection(Direction.EAST);
printDirection(Direction.WEST);
}
private void printDirection(Direction direction) {
switch (direction) {
case Direction.EAST:{
System.out.println("the direction is east");
break;
} case Direction.SOUTH:{
System.out.println("the direction is south");
break;
} case Direction.WEST:{
System.out.println("the direction is west");
break;
} case Direction.NORTH:{
System.out.println("the direction is north");
break;
} default:{
System.out.println("unknown ");
break;
}
}
}
方法test()的执行结果:
the direction is east
the direction is west
枚举类探究
Java的枚举类型是一个Java类,隐式继承java.lang.Enum类。枚举类型是一个Java类意味着可以为枚举类型添加属性和普通方法,但是枚举类型的构造器应该设置为private或package-private。在比较两个枚举类型的值时,使用“==”比较而不是“equals”比较。示例代码:
public enum Size {
SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
private final String abbr;
public String getAbbr() {
return abbr;
}
Size(String abbr) {
this.abbr = abbr;
}
}
toString()方法返回枚举常量名,Enum.valueOf()方法则解析一个字符串得到枚举类型对象,values()方法返回一个包含枚举值的所有值的数组,ordinal()方法返回该枚举值定义的顺序。使用枚举类型Size的代码:
public void testFieldAndMethod() {
System.out.println(Size.MEDIUM.toString());
System.out.println(Enum.valueOf(Size.class, "MEDIUM") == Size.MEDIUM);
System.out.println(Size.MEDIUM.getAbbr());
System.out.println("获取所有枚举值:");
for (Size size : Size.values()) {
System.out.println(size.ordinal());
System.out.println(size.toString());
System.out.println(size.getAbbr());
System.out.println("------------");
}
}
执行结果:
MEDIUM
true
M
获取所有枚举值:
0
SMALL
S
------------
1
MEDIUM
M
------------
2
LARGE
L
------------
3
EXTRA_LARGE
XL
------------
参考资料:
[1]: https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
[2]: Java核心技术·卷一