通用字符串到枚举验证器

问题描述 投票:0回答:1

我必须验证包含一堆列的 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);

这可能吗?

java validation enums
1个回答
0
投票

根据 g00se 在评论中提供的链接,我想出了这个并且它有效:

private boolean valitateAgainstTheEnum(String value, Class<? extends Enum> theEnum) {
    try {
        Enum.valueOf(theEnum, value);
        return true;
    } catch (IllegalArgumentException e) {
        return false;
    }
}

唯一的问题是是否有更优雅的方法来做到这一点

© www.soinside.com 2019 - 2024. All rights reserved.