我使用的是 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/