无论如何,通过将其与给定的字符串进行比较来检查是否存在枚举?我似乎找不到任何这样的功能。我可以尝试使用该valueOf方法并捕获异常,但是据我了解,捕获运行时异常不是一种好习惯。有人有什么想法吗?
valueOf
我不认为没有捕获异常的内置方法。您可以改用如下方式:
public static MyEnum asMyEnum(String str) { for (MyEnum me : MyEnum.values()) { if (me.name().equalsIgnoreCase(str)) return me; } return null; }
编辑: 正如乔恩·斯凯特(Jon Skeet)所述,values()每次调用时,都会通过克隆私有支持数组来工作。如果性能至关重要,则可能values()只需要调用一次,缓存阵列并对其进行迭代。
values()
另外,如果您的枚举值很多,那么Jon Skeet的map替代方法可能比任何数组迭代都具有更好的性能。