• java枚举的用法


    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
  • 相关阅读:
    [置顶] 某大型银行深化系统技术方案之一:实现技术定义
    android代码实现关机
    一个IP每天只弹一次广告窗口
    bootstrap框架开发电子商城案例
    HDU 1203 I NEED A OFFER!(dp)
    STL algorithmi算法s_sorted和is_sorted_until(28)
    计数排序(C语言版本)
    4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别
    《python源代码分析》笔记 pythonVM一般表达式
    ASP.NET——两个下拉框来实现动态联动
  • 原文地址:https://www.cnblogs.com/lingshang/p/10957378.html
Copyright © 2020-2023  润新知