初识Enum
enum,称为枚举。发音为[‘enəm],全称enumeration,JDK 1.5新增的特性,用于定义一组有共同特性的数据。
不使用枚举声明一组常量:
public class Color{
public final static int RED = 1;
public final static int GREEN = 2;
public final static int BLANK = 3;
public final static int YELLOW = 4;
}
public class Singal{
public final static int RED = 1;
public final static int GREEN = 2;
public final static int YELLOW = 4;
}
public class TrafficLight {
int color = 1;
public void change() {
switch (color) {
case Color.RED:
color = Signal.GREEN;
break;
case Color.YELLOW:
color = Signal.RED;
break;
case Color.GREEN:
color = Signal.YELLOW;
break;
}
}
}
enum声明及与switch结合使用方法:
public enum Color {
RED, GREEN, BLANK, YELLOW
}
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
初看上去两种方法似乎没有什么差别,那我们想一下,如果color是传入给方法的一个参数,那意味着原始的方法可以接收任何int的值,因此,您需要检测上界和下界,在出现无效值的时候,可能还要包含一个 IllegalArgumentException 。而enum类型不存在这样的问题。
Enum应用
遍历枚举值
for(Color color : Color.values()){
System.out.println(color);
}
输出结果如下:
RED
GREEN
YELLO
BLANK
通过枚举实现接口
public interface Command {
void execute();
}
public enum Action3 implements Command {
GREEN {
public void execute() {
out.println("请通过");
}
},
YELLOW {
public void execute() {
out.println("请观察后通过");
}
},
RED {
public void execute() {
out.println("请停止");
}
},
BLANK {
public void execute() {
out.println("空白");
}
}
}
public class EnumTest001 {
public static void main(String[] args) {
EnumTest001.play(Action3.YELLOW);
EnumTest001.play(Action3.GREEN);
}
static void play(Action3 action) {
action.execute();
}
}
//输出結果
请观察后通过
请通过