Java列舉類,這樣使用優雅、易懂

zhaozhangxiao發表於2021-09-06

Java 列舉是一個特殊的類,一般表示一組常量,比如一年的 4 個季節,一個年的 12 個月份,一個星期的 7 天,方向有東南西北等。

Java 列舉類使用 enum 關鍵字來定義,各個常量使用逗號 , 來分割。
看實現:

 @Test
    public void test() {
        // 1.獲取改列舉值和描述
        Integer type1 = LoginTypeEnum.EMAILLOGIN.getType();
        System.out.println(type1);
        String description1 = LoginTypeEnum.EMAILLOGIN.getDescription();
        System.out.println(description1);
        // 2.獲取描述
        String description = LoginTypeEnum.getDescription(1);
        System.out.println(description);
        // 3.獲取列舉類
        LoginTypeEnum type = LoginTypeEnum.getType(1);
        switch (type) {
            case SCANLOGIN:
                System.out.println("掃描");
                break;
            case EMAILLOGIN:
                System.out.println("郵件");
                break;
            case MESSAGELOGIN:
                System.out.println("簡訊");
                break;
            default:
                System.out.println("無");
        }
    }
package com.foodie.enumeration;

import lombok.Getter;

import java.util.stream.Stream;

@Getter
public enum LoginTypeEnum {
  EMAILLOGIN(1, "郵件登陸"),
  MESSAGELOGIN(2, "簡訊登陸"),
  SCANLOGIN(3, "掃描登陸");
  Integer type;
  String description;

  LoginTypeEnum(Integer value, String description) {
  this.type = value;
  this.description = description;
 }

  /**
 * 透過型別獲取列舉類
  *
 * @param type
  */
  public static LoginTypeEnum getType(Integer type) {
  return Stream.of(LoginTypeEnum.values()).filter(s -> s.type.equals(type)).findAny().orElse(null);
 }
  /**
 * 透過型別獲取描述值
  *
 * @param type
  * @return
  */
  public static String getDescription(Integer type) {
  LoginTypeEnum[] values = LoginTypeEnum.values();
  return Stream.of(values).filter(s -> s.type == type).map(s -> s.description).findAny().orElse(null);
 }}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章