前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java枚举个人使用全面解析

java枚举个人使用全面解析

作者头像
码农王同学
发布2020-03-25 12:07:09
3380
发布2020-03-25 12:07:09
举报
文章被收录于专栏:后端Coder

这篇文章就不介绍枚举类是什么了,感兴趣的可以看下历史的这篇文章,Java enum枚举详解今天要分享的主要是下面的这个示例程序了,全面解析了开发中会遇到的问题的解决方法。

耗费了一点时间写了这些方法的使用,接下来我们整个程序的代码都完全提供了出来,由于方法名称可以见名知意,过多的解释性说明就不介绍了。

代码语言:javascript
复制
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);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农王同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档