switch 与 枚举类结合使用

1.枚举类定义

说明

    JDK1.5 才开始有枚举类型,同时 Java 组织丰富了 switch 语句:支持枚举。

定义一个枚举类 DeviceType

```

import lombok.Getter;

/**

* 个人安全行业的设备类型

*/

@Getter

public enum DeviceType {

    //枚举类型

    SOS_ALARM(0, "SOS报警器"),

    GPS_TRACKER(1, "GPS跟踪器"),

    SOS_GPS_ALARM(2, "SOS+GPS报警器");

    //属性值:即此枚举类,有code与描述name

    int code;

    String name;

    //构造方法

    DeviceTypeSafetyEnum(int code, String name) {

        this.code = code;

        this.name = name;

    }


    //根据枚举类的 code 值,获取枚举类型;当枚举类与switch结合使用时,此方法是必须的

    public static DeviceTypeEnum getEnumByKey(int key) {

        for (DeviceTypeSafetyEnum deviceType : DeviceTypeSafetyEnum.values()) {

            if (key == deviceType.code) {

                return deviceType;

            }

        }

        return null;

    }

    //根据code值,获取当前枚举类的描述

    public static String getValueByKey(int key) {

        for (DeviceTypeSafetyEnum deviceType : DeviceTypeSafetyEnum.values()) {

            if (key == deviceType.code) {

                return deviceType.name;

            }

        }

        return null;

    }

```

结合 switch 语句使用

说明

在switch中使用通常需要先获取枚举类型才判断,因为case中是常量或者int、byte、short、char,写其他代码编译是不通过的

示例

int code = 2;

switch ( DeviceType.getEnumByKey(code) ) {

    case SOS_ALARM:

      log.info(DeviceType.getValueByKey(code));

      break;

    case GPS_TRACKER:

      //...

      break;

    case SOS_GPS_ALARM:

      //...

      break;

    default:

}

你可能感兴趣的:(switch 与 枚举类结合使用)