一尘不染

检查Java中是否存在枚举

java

无论如何,通过将其与给定的字符串进行比较来检查是否存在枚举?我似乎找不到任何这样的功能。我可以尝试使用该valueOf方法并捕获异常,但是据我了解,捕获运行时异常不是一种好习惯。有人有什么想法吗?


阅读 356

收藏
2020-12-03

共1个答案

一尘不染

我不认为没有捕获异常的内置方法。您可以改用如下方式:

public static MyEnum asMyEnum(String str) {
    for (MyEnum me : MyEnum.values()) {
        if (me.name().equalsIgnoreCase(str))
            return me;
    }
    return null;
}

编辑: 正如乔恩·斯凯特(Jon
Skeet)所述,values()每次调用时,都会通过克隆私有支持数组来工作。如果性能至关重要,则可能values()只需要调用一次,缓存阵列并对其进行迭代。

另外,如果您的枚举值很多,那么Jon Skeet的map替代方法可能比任何数组迭代都具有更好的性能。

2020-12-03