zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Rust 包管理器 Cargo 入门
    如何设置对企业批量的图文档加密?2021企业首选公司文档加密方案,宁波风奥金甲数据防泄漏
    跟坚哥学QUIC系列:加密和传输握手
    如何在SQLServer中处理每天四亿三千万记录的
    高德最佳实践:Serverless 规模化落地有哪些价值?
    浅谈 Pull Request 与 Change Request 研发协作模式
    Dbeaver连接国产数据库人大金仓
    我对云原生软件架构的观察与思考
    Java Web整合开发(20) -- Hibernate入门
    2 修改与恢复
  • 原文地址:https://www.cnblogs.com/lingshang/p/10957378.html
Copyright © 2011-2022 走看看