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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM