Java 枚举
Mr.wu edited this page Mar 1, 2018
·
5 revisions
1、枚举不能继承
2、枚举的构造函数必须是private
3、,在Java中定义常量都是public static final TYPE a; 这样的形式。有了枚举,你可以将有关联关系的常量组织起来,使代码更加易读、安全,并且还可以使用枚举提供的方法。
4、每个枚举对象都是static final的类对象。
在enum中,提供了一些基本方法:
values():返回enum实例的数组,而且该数组中的元素严格保持在enum中声明时的顺序。
name():返回实例名。
ordinal():返回实例声明时的次序,从0开始。
getDeclaringClass():返回实例所属的enum类型。
equals() :判断是否为同一个对象。
可以使用 == 来比较enum实例。
此外,java.lang.Enum实现了Comparable和 Serializable 接口,所以也提供 compareTo() 方法。
枚举声明的格式 注:如果枚举中没有定义方法,也可以在最后一个实例后面加逗号、分号或什么都不加。
下面三种声明方式是等价的:
enum Color { RED, GREEN, BLUE }
// 使用Color.RED获取到的是对象 Color RED,Color.RED.Name()获取到的是这个实例对象的名字,Color.RED.ordinal():返回实例声明时的次序,从0开始。
enum Color { RED, GREEN, BLUE, }
enum Color { RED, GREEN, BLUE; }
我们经常使用switch语句来写状态机。JDK7以后,switch已经支持 int、char、String、enum 类型的参数。这几种类型的参数比较起来,使用枚举的switch代码更具有可读性。
enum Signal {RED, YELLOW, GREEN}
public static String getTrafficInstruct(Signal signal) {
String instruct = "信号灯故障";
switch (signal) {
case RED:
instruct = "红灯停";
break;
case YELLOW:
instruct = "黄灯请注意";
break;
case GREEN:
instruct = "绿灯行";
break;
default:
break;
}
return instruct;
}
参考:http://blog.csdn.net/lmj623565791/article/details/79278864