gpt4 book ai didi

java - 使用 'valueOf' 检索枚举会抛出 RuntimeException - 改用什么?

转载 作者:搜寻专家 更新时间:2023-10-30 21:14:14 25 4
gpt4 key购买 nike

我有以下枚举

enum Animal implements Mammal {
CAT, DOG;

public static Mammal findMammal(final String type) {
for (Animal a : Animal.values()) {
if (a.name().equals(type)) {
return a;
}
}
}
}

我最初使用 Enum.valueOf(Animal.class, "DOG"); 来查找特定的动物。但是,我不知道如果未找到匹配项,则会抛出 IllegalArgumentException。我认为可能返回了一个空值。所以这给了我一个问题。如果未找到匹配项,我不想捕获此 IllegalArgumentException。我希望能够搜索 Mammal 类型的所有枚举,并且我不想为每个 Mammal 类型的枚举都实现这个静态“findMammal。所以我的问题是,实现这种行为最有利的设计决定是什么?我将有这样的调用代码:

public class Foo {
public Mammal bar(final String arg) {
Mammal m = null;
if (arg.equals("SomeValue")) {
m = Animal.findMammal("CAT");
} else if (arg.equals("AnotherValue") {
m = Human.findMammal("BILL");
}
// ... etc
}
}

如您所见,我有不同类型的 Mammal - 'Animal'、'Human',它们是枚举。我不想为每个哺乳动物枚举实现“findMammal”。我想最好的办法就是创建一个实用程序类,它接受一个 Mammal 参数并搜索它?也许有一个更简洁的解决方案。

最佳答案

您可以使用 getEnum方法 vom apache EnumUtils图书馆。如果未找到,它将返回枚举或 null

EnumUtils.getEnum(Animal.class, "CAT");

关于java - 使用 'valueOf' 检索枚举会抛出 RuntimeException - 改用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9384227/

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