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 協議》,轉載必須註明作者和本文連結