java - 如何以编程方式获取 Java 中枚举的引用?

标签 java hibernate enums

我使用的是 Java 1.6 和 Hibernate 3.6.10.Final。我需要根据应用程序内置的枚举检查几个数据库表的内容。 (数据库表往往会偶尔添加和删除值,但没有人告诉开发人员。)所以on startup我想做这样的事情:

for (service myService : ListOfServices() ) {
    enum MyEnum = GoGetCorrespondingEnum(myService);
    Map<Character, String> databaseMap = myService.findAll();
    if (databaseMap.size() != MyEnum.values().length) {
        logger.error("Enum is out of sync with database tableand must be fixed!");
    }
}

问题是,在第二行中,我不知道如何获取我正在查看的服务的相应枚举。谁能推荐一个方法吗?

最佳答案

向所有服务类添加一个通用方法,其中每个服务都可以返回与其相关的枚举。

public Class<? extends Enum<?>> getEnumType() {
    return MyEnum.class;
}

然后在您的代码中验证给定服务使用的枚举中的值的数量

myService.getEnumType().getEnumConstants().length;

关于java - 如何以编程方式获取 Java 中枚举的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23304181/

相关文章:

java - 通过 bouncy caSTLe 在 android 中读取证书

hibernate - 为什么我在尝试构造 JPQL 连接查询时得到无效路径?

java - 映射 JPA 实体

java - 当级联操作在 SGBD 中完全映射时,我应该在 hibernate 中映射级联操作吗?

java - 将枚举中的所有名称作为 String[]

javascript - 无法通过 ngSwitch 正确使用枚举

Java-Akka : Assemble message from multiple actors

java - Spring运行独立线程

java - 在java中添加变量的约束

c# 枚举函数参数