首页 > 编程语言 > 详细

java枚举的用法

时间:2019-05-31 21:36:26      阅读:78      评论:0      收藏:0      [点我收藏+]

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

java枚举的用法

原文:https://www.cnblogs.com/lingshang/p/10957378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!