迭代枚举,保存类,然后初始化类并将它们放入映射中

时间:2016-06-29 09:50:37

标签: java enums


我已经创建了一个接口,我的类实现了这个接口,并且我有一个带有counstructor的枚举,它以Class<?>作为争论。像Enum(Class<?> class)这样的东西,枚举有一个返回该类的函数。我怎样才能使class争论必须实现我的界面,以后我如何循环遍历枚举的values(),获取类,初始化它们并将它们放入HashMap。

感谢您的帮助。

2 个答案:

答案 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());
}