我有以下枚举
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异常.我以为可能是一个null被返回.所以这给我一个问题.如果没有找到匹配,我不想抓住这个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枚举实现“findMammal”.我想最好的打赌只是创建一个实用程序类,它需要一个哺乳动物的参数,并搜索?也许有一个更完整的解决方案.