public enum Dictionaries {
FIRST_DICTIONARY(FirstDictionary.class),
SECOND_DICTIONARY(SecondDictionary.class);
private Class<? extends DictionaryModel> clazz;
private Dictionary(Class<? extends DictionaryModel> clazz) {
this.clazz = clazz;
}
public Class<? extends DictionaryModel> clazz() {
return this.clazz;
}
}
我有这个枚举类型。`FirstDictionary` 和 `SecondDictionary` 实现了 `DictionaryModel` 接口,这是为了使用这个解决方案而创建的标记接口。
目前我希望能够这样做:
```java Class clazz = Dictionaries.FIRST_DICTIONARY.clazz(); ```
显然,在当前设计中这是不可能的,我也想不到实现它的方法。是否有任何方法可以做到这一点?我可以修改整个代码,包括接口(甚至删除它)。
我简化了所有内容,关键是每个字典都是一个数据库表,我有一个通用的 DAO(而不是每个字典一个 DAO),现在我必须强制转换每次读取的结果,我希望避免这样做。我知道通用DAO不是一个好主意(或者根本就不需要DAO)。
```java Optional entity = dao.getByValue(Dictionaries.FIRST_DICTIONARY, value); ```
我甚至无法找到任何动态转换的方法,在 DAO 本身或 `clazz()` 方法中。我感觉自己漏掉了什么很明显的东西。
我非常感谢任何想法,即使是完全改变设计的想法。