我知道我可以使用下面伪代码描述的概念来检查String是否包含在特定的枚举中(我知道没有contains方法Enum,这只是我的例子):
Enum Animal {
Dog,
Cat,
Human
}
public boolean CheckAnimalValid(String name){
return Animal.contains(name)? true : false;
}
Run Code Online (Sandbox Code Playgroud)
但在以前的方式中,我需要为每个Enum类实现CheckValid方法,因为我需要知道应该检查WHICH Enum类.
我想知道是否有任何方法将Enum类型作为参数传递给函数,以便我可以这样做:
Enum Animal {
Dog,
Cat,
Person
}
Enum Plant {
Grass,
Flower,
Tree
}
public boolean CheckEnumValid(String name, what_should_I_do? enum){
return enum.contains(name)? true : false;
}
Run Code Online (Sandbox Code Playgroud)
我想知道what_should_I_do应该使用哪种类型(或关键字)?在前面的代码中.我知道我应该使用泛型,但我不知道该怎么做.谢谢!
如果名称与该类型的枚举常量匹配,则可以使用Enum.valueOf(Class<T> enumType, String name)返回类型枚举的静态方法T.否则抛出一个IllegalArgumentException.
用法示例:
Enum.valueOf(Plant.class, "Flower");
Run Code Online (Sandbox Code Playgroud)
包含在返回布尔值的方法中:
public <T extends Enum<T>> boolean checkValid(Class<T> enumType, String name){
try {
Enum.valueOf(enumType, name);
return true;
} catch(IllegalArgumentException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5458 次 |
| 最近记录: |