我已经创建了一个接口,我的类实现了这个接口,并且我有一个带有counstructor的枚举,它以Class<?>
作为争论。像Enum(Class<?> class)
这样的东西,枚举有一个返回该类的函数。我怎样才能使class
争论必须实现我的界面,以后我如何循环遍历枚举的values()
,获取类,初始化它们并将它们放入HashMap。
感谢您的帮助。
答案 0 :(得分:3)
在通配符上使用upper bound:
Class<? extends YourInterface>
答案 1 :(得分:0)
public enum MyEnum {
VALUE_1(ClassA.class);
private Class<? extends MyItf> clazz;
MyEnum(Class<? extends MyItf> clazz) {
this.clazz = clazz;
}
public Class<? extends MyItf> getClazz() {
return clazz;
}
}
然后循环enum.values()
:
Map<MyEnum, Class> map = new HashMap<>();
for(MyEnum e : MyEnum.values()) {
map.put(e, e.getClazz());
}