从字符串中获取枚举值

sushma:

我有这样的枚举类:

    public enum Severity {

        HIGH("High level it is ", RED, DARK_RED),
        MEDIUM("Medium level it is ", AMBER, LIGHT_YELLOW),
        LOW("Low level it is ", GREEN, DARK_GREEN);

    private String value;

    private List<Colors> color;

    Severity(String value, Color... colors) {
        this.value = value;
        this.color = Arrays.asList(colors);
    }

    public static List<String> getSeverityKeys() {
        return EnumSet.allOf(Severity.class).stream()
            .map(Severity::name)
            .collect(Collectors.toList());
    }

    public static List<String> getSeverityValues() {
        return EnumSet.allOf(Severity.class).stream()
            .map(Severity::getValue)
            .collect(Collectors.toList());
    }

    public static Severity getDescriptionByColor(String color) {

        return EnumSet.allOf(Severity.class).stream()
            .filter(severity -> Severity.getToolDomainValues().equals(color))
            .findFirst()
            .orElse(null);
    }

    public String getValue() {
        return value;
    }

    public List<Color> getColor() {
        return color;
    }
  }

输入:DARK_RED

输出:高电平

要么

输入:DARK_GREEN

输出:低电平

如何使用JAVA Stream功能实现此目标

我正在尝试修复方法-getDescriptionByColor(字符串颜色)

Azro:

我建议颜色是枚举的Color,您可以适应


您需要遍历Severity.values()并查找具有所需值的变量,然后获取查找变量的字符串(第一个参数):

static String getString(Color value) {
    return Arrays.stream(Severity.values())
            .filter(severity -> severity.getColorB().equals(value))
            .map(Severity::getString)
            .findFirst().orElse(null);
}

采用

System.out.println(Severity.getString(Color.DARK_RED)); //High level it is
System.out.println(Severity.getString(Color.DARK_GREEN)); // Low level it is

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章