这篇文章就不介绍枚举类是什么了,感兴趣的可以看下历史的这篇文章,Java enum枚举详解今天要分享的主要是下面的这个示例程序了,全面解析了开发中会遇到的问题的解决方法。
耗费了一点时间写了这些方法的使用,接下来我们整个程序的代码都完全提供了出来,由于方法名称可以见名知意,过多的解释性说明就不介绍了。
package com.wpw.springbootjuc.enum002;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@AllArgsConstructor
@Getter
@Accessors(chain = true)
public enum ColorEnum {
YELLO(0, "黄色"),
BLUE(1, "蓝色"),
RED(2, "红色"),
WHITE(3, "白色"),
BLACK(4, "黑色"),
GREEN(5, "绿色");
/**
* code码
*/
private Integer code;
/**
* 颜色名称
*/
private String name;
/**
* @return 获取颜色名称数据集合
*/
private static List<String> ofColorNameList() {
List<String> colorNameList = new ArrayList<>();
for (ColorEnum c : ColorEnum.values()) {
colorNameList.add(c.getName());
}
return colorNameList;
}
/**
* @return 获取颜色状态码数据集合
*/
private static List<Integer> ofColorCodeList() {
List<Integer> colorCodeList = new ArrayList<>();
for (ColorEnum c : ColorEnum.values()
) {
colorCodeList.add(c.getCode());
}
return colorCodeList;
}
/**
* 判断颜色名称是否相等
*
* @param colorName 颜色名称
* @return true/false
*/
private static boolean check(String colorName) {
Objects.requireNonNull(colorName, "颜色名称不能为空");
for (ColorEnum c : ColorEnum.values()) {
if (colorName != null && c.getName().equals(colorName)) {
return true;
}
}
return false;
}
/**
* 根据颜色名称获取所对应的code值
*
* @param colorName 颜色名称
* @return 颜色所对应的code
*/
public static int getColorCode(String colorName) {
Objects.requireNonNull(colorName, "颜色名称不能为空");
for (ColorEnum c : ColorEnum.values()) {
if (colorName != null && colorName.equals(c.getName())) {
return c.getCode();
}
}
return -1;
}
/**
* 根据颜色Code获取颜色名称
*
* @param colorCode 颜色Code
* @return 颜色名称
*/
public static String getColorName(Integer colorCode) {
Objects.requireNonNull(colorCode, "状态码不能为空");
preCheck(colorCode);
for (ColorEnum c : ColorEnum.values()) {
if (colorCode != null && colorCode != -1 && colorCode.equals(c.getCode())) {
return c.getName();
}
}
return null;
}
private static void preCheck(Integer colorCode) {
if (colorCode == -1) {
throw new IllegalArgumentException("颜色状态码不能为-1");
}
}
public static void main(String[] args) {
ofColorNameList().stream().forEach(x -> System.out.println(x));
System.out.println();
ofColorCodeList().stream().forEach(x -> System.out.println(x));
boolean checkFlag = check("蓝色");
System.out.println("checkFlag = " + checkFlag);
String colorName = getColorName(0);
System.out.println("colorName = " + colorName);
int colorCode = getColorCode("红色");
System.out.println("colorCode = " + colorCode);
String colorName1 = getColorName(-1);
System.out.println("colorName1 = " + colorName1);
}
}