java基础——了解Enum

来源:互联网 发布:青天白日t恤 淘宝 编辑:程序博客网 时间:2024/05/20 13:37

初识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);}

输出结果如下:

REDGREENYELLOBLANK

通过枚举实现接口

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();    }}//输出結果请观察后通过请通过
0 0
原创粉丝点击