gpt4 book ai didi

java - 检查枚举类型是否包含具有给定名称的常量

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:12 25 4
gpt4 key购买 nike

我的代码中有多个枚举:

public enum First { a, b, c, d; }

public enum Second { e, f, g; }

我希望有一种方法可以使用 valueOf() 检查值是否存在于任何枚举中,而无需为每种枚举类型编写一个。例如(这段代码不运行):

public boolean enumTypeContains(Enum e, String s) {
try {
e.valueOf(s);
} catch (IllegalArgumentException iae) {
return false;
}
return true;
}

用法:

enumTypeContains(First,"a"); // returns true
enumTypeContains(Second,"b"); // returns false

关于如何做这样的事情有什么想法吗?

最佳答案

这应该有效:

public <E extends Enum<E>> boolean enumTypeContains(Class<E> e, String s) {
try {
Enum.valueOf(e, s);
return true;
}
catch(IllegalArgumentException ex) {
return false;
}
}

然后你必须调用它

enumTypeContains(First.class, "a");

不过,我不确定简单地搜索值(如 jinguy 的回答)是否比创建和抛出异常更快。这将取决于您获得 false 的频率、您拥有的常量数量以及堆栈跟踪的长度(例如调用的深度)。

如果您经常需要这样做(对于同一个枚举),最好创建一次将名称映射到枚举值的 HashSet 或 HashMap。

关于java - 检查枚举类型是否包含具有给定名称的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com