java - 创建用于验证的通用枚举包装器

标签 java generics types enums instance

免责声明:泛型不是很强。

enum WeekDays {
   SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
enum Months {
   JANUARY, FEBRAURY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;
}
enum Directions {
   East, West, North, South, Up, Down
}

假设我有上面的枚举,并且有一个服务向我发送随机字符串。

我需要验证目标字符串响应是否是有效的枚举值。

我正在考虑编写如下代码:

static <T> boolean isValidEnum(String value, T enumClass ){
   try {
       enumClass.valueOf(value);
       return true;
   } catch (Exception e) {
   }
   return false;
}

调用如下:

isValidEnum("TUESDAY", WeekDays)

但是 enumClass.valueOf(value); 行对我的函数不满意。

感谢任何指点! TIA

最佳答案

您可以将其重写为:

static <T extends Enum<T>> boolean isValidEnum(String value, Class<T> enumClass ){
    try {
        Enum.valueOf(enumClass, value);
        return true;
    } catch (Exception e) {
    }
    return false;
}

isValidEnum("TUESDAY", WeekDays.class)

关于java - 创建用于验证的通用枚举包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61748740/

相关文章:

java - <?> 是什么意思

java - 将 JDBC ResultSet 转换为泛型类型?

java - 变量数据类型

python - Python 2.7 和 Python 3.3 之间的函数类型检查

java - JDBC MySQL 连接到故障转移节点非常慢

java - 概括java中的4种方法

java - 将另一个类的多个实例添加到 LinkedList 中

c++ - 各种类型的容器 - C++

haskell - 如何在 Haskell 中实现生成 Maybe String 的 safeReadFile 函数

java - 如何在 Java 中的随机数生成器上使用 switch 语句?