java枚举类型,为什么强烈推荐使用?看看它的7种场景方法

枚举是 JDK 1.5 新增的数据类型 , 使用枚举我们可以很好的描述一些特定的业务场景 , 比如一年中的春、夏、秋、冬 , 还有每周的周一到周天 , 还有各种颜色 , 以及可以用它来描述一些状态信息 , 比如错误码等 。
枚举类型不止存在在 JAVA 语言中 , 在其它语言中也都能找到它的身影 , 例如 C# 和 Python 等 , 但我发现在实际的项目中使用枚举的人很少 , 所以本文就来聊一聊枚举的相关内容 , 好让朋友们对枚举有一个大概的印象 , 这样在编程时起码还能想到有“枚举”这样一个类型 。

java枚举类型,为什么强烈推荐使用?看看它的7种场景方法

文章插图
 
枚举的 7 种使用方法
很多人不使用枚举的一个重要的原因是对枚举不够熟悉 , 那么我们就先从枚举的 7 种使用方法说起 。
用法一:常量在 JDK 1.5 之前 , 我们定义常量都是 public static final...  , 但有了枚举 , 我们就可以把这些常量定义成一个枚举类了 , 实现代码如下:
public enum ColorEnum {    RED, GREEN, BLANK, YELLOW  } 用法二:switch将枚举用在 switch 判断中 , 使得代码可读性更高了 , 实现代码如下:
enum ColorEnum {    GREEN, YELLOW, RED}public class ColorTest {    ColorEnum color = ColorEnum.RED;    public void change() {        switch (color) {            case RED:                color = ColorEnum.GREEN;                break;            case YELLOW:                color = ColorEnum.RED;                break;            case GREEN:                color = ColorEnum.YELLOW;                break;        }    }}用法三:枚举中增加方法我们可以在枚举中增加一些方法 , 让枚举具备更多的特性 , 实现代码如下:
public class EnumTest {    public static void main(String[] args) {        ErrorCodeEnum errorCode = ErrorCodeEnum.SUCCESS;        System.out.println("状态码:" + errorCode.code() +                            " 状态信息:" + errorCode.msg());    }}enum ErrorCodeEnum {    SUCCESS(1000, "success"),    PARAM_ERROR(1001, "parameter error"),    SYS_ERROR(1003, "system error"),    NAMESPACE_NOT_FOUND(2001, "namespace not found"),    NODE_NOT_EXIST(3002, "node not exist"),    NODE_ALREADY_EXIST(3003, "node already exist"),    UNKNOWN_ERROR(9999, "unknown error");    private int code;    private String msg;    ErrorCodeEnum(int code, String msg) {        this.code = code;        this.msg = msg;    }    public int code() {        return code;    }    public String msg() {        return msg;    }    public static ErrorCodeEnum getErrorCode(int code) {        for (ErrorCodeEnum it : ErrorCodeEnum.values()) {            if (it.code() == code) {                return it;            }        }        return UNKNOWN_ERROR;    }}


推荐阅读