我必须验证包含一堆列的 CSV 文件。其中一些需要映射到各种枚举类型。我知道如何针对特定枚举类型验证字符串值,但我想要一个通用验证方法,在其中传递字符串值和枚举类型并获取验证结果。到目前为止我有这个:
private boolean valitateSomeSpecificEnum(String value) {
try {
SomeSpecificEnum.valueOf(value);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
是否可以有这样的东西:
private boolean valitateAgainstTheEnum(String value, Enum<?> theEnum) {
try {
theEnum.valueOf(value);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
注意,我在方法签名中使用
Enum<?>
只是为了明确我想要实现的目标,我知道按照书面形式它是行不通的。
然后我可以这样称呼它
valitateTheEnum("foo", SomeSpecificEnum.class);
这可能吗?
根据 g00se 在评论中提供的链接,我想出了这个并且它有效:
private boolean valitateAgainstTheEnum(String value, Class<? extends Enum> theEnum) {
try {
Enum.valueOf(theEnum, value);
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
唯一的问题是是否有更优雅的方法来做到这一点