java - Java集包含多个返回选项

标签 java set contains options

我有一段很好的代码,但是我想知道是否有更好的方法来获得相同的结果。

public enum Status {
    ENUM1, ENUM2, ENUM3, ENUM4;

    public static Status getStatus(Set<String> set) {
        if (set.contains("x")) {
            return ENUM1;
        }
        if (set.contains("y") || set.contains("z")) {
            return ENUM2;
        }
        if (set.contains("c")) {
            return ENUM3;
        }
        return ENUM4;
    }
}


所以基本上这是代码(xyzc都是常量)。因此,该方法需要一组字符串,并且必须返回正确的枚举。有没有更好的方法来达到相同的结果?

编辑:这是方法的方法,设置开头永远不会为空,所以不要在意那部分。

Edit2:希望可以清除它。

最佳答案

您可以考虑将转换逻辑封装在Status枚举中。像这样:

enum Status{
    Option1("x"),
    Option2("y", "z"),
    Option3("c"),
    Default;

    Status (String ... values){
        this.values = values;
    }

    String [] values;

    static Status convert(Set<String> set){
        for (Status status : Status.values())
            for (String str : status.values)
                if (set.contains(str))
                    return status;
        return Default;
    }
}

关于java - Java集包含多个返回选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344337/

相关文章:

arrays - 数组包含太慢的 Swift

java - Guice 创建异常 - 无限制辅助

java - 使用电话号码比较查询数据库

java - 无法创建构造函数

java - Java 代码中的 Kotlin List 与 java.util.List 泛型类型

swift - 将集合保存到核心数据中

java - Java 哈希表单向链表的空指针异常

javascript - 如何遍历对象并检查它是否有另一个对象作为名称为 "test__c"的属性

string - 在字符串上的when表达式中设置忽略大小写值

Java Maze Solver - 我从来没有这么卡过