java枚举的用法

mac2022-06-30  111

java枚举的用法

1. 枚举类型的使用

package com.longfor.devops.eagleeye.client.dto; import lombok.Data; /** * @author liuyang */ @Data public class AppStatusDTO { /** * app的ID */ private String appInstanceId; /** * app的状态 */ private Status status; /** * 状态的内容 */ private String content; /** * 时间戳 */ private Integer timestamp; // red, yellow, green, unknown代表的就是枚举出来的不同实例,传入的参数, 后面的构造函数中Status(int i)中进行的定义 public enum Status { /** * 不健康 */ red(2), /** * 良好 */ yellow(1), /** * 健康 */ green(0), /** * 未知 */ unknown(-1); public final int num; private Status(int i) { this.num = i; } public static Status valueOf(int num){ switch (num){ case 0 : return AppStatusDTO.Status.green; case 1: return AppStatusDTO.Status.yellow; case 2: return AppStatusDTO.Status.red; default:return AppStatusDTO.Status.unknown; } } } }

2. 枚举类型的使用

package javatest; import org.junit.Test; import java.util.EnumMap; import java.util.EnumSet; /** * @ClassName STest * @Description TODO * @Author lingxiangxiang * @Date 11:49 AM * @Version 1.0 **/ public class STest { @Test public void hello() { AppStatusDTO appStatusDTO = new AppStatusDTO(); // 设置Status的变量 appStatusDTO.setStatus(AppStatusDTO.Status.red); // 获取Status的具体的值 System.out.println(appStatusDTO.getStatus().num); // 通过values的方法来遍历所有的枚举类型 for (AppStatusDTO.Status status: AppStatusDTO.Status.values()) { System.out.println(status.num); System.out.println(status.toString()); } // 通过EnumSet来遍历所有的枚举 EnumSet<AppStatusDTO.Status> colors = EnumSet.allOf(AppStatusDTO.Status.class); for (AppStatusDTO.Status color: colors) { System.out.println(color); } } }

总结:

enum 可以定义常量类型, 它被编译期编译为: final class Xxx extends Enums{….}name()获取常量定义的字符串常量values()获取所有的枚举类型可以为enum类编写构造方法, 字段和方法构造方法申明为private

转载于:https://www.cnblogs.com/lingshang/p/10957378.html

最新回复(0)